Thứ năm, 05/05/2016 | 00:00 GMT+7

Cách di chuyển dữ liệu Redis với Master-Slave Replication trên Ubuntu 14.04

Redis là bộ nhớ đệm trong bộ nhớ, NoSQL, bộ nhớ đệm và lưu trữ key-value cũng có thể được lưu giữ trên đĩa. Nó ngày càng phổ biến và được sử dụng như một repodata trong các dự án lớn và nhỏ. Vì bất kỳ lý do nào, chẳng hạn như chuyển đổi sang một server mạnh hơn, đôi khi cần phải di chuyển dữ liệu đó từ server này sang server khác.

Mặc dù có thể chỉ sao chép các file database từ server hiện tại sang server mới, nhưng phương pháp được khuyến khích để di chuyển database Redis là sử dụng cài đặt sao chép theo kiểu master-slave. Cài đặt như vậy nhanh hơn nhiều so với việc sao chép file và liên quan đến rất ít hoặc không có thời gian chết.

Bài viết này sẽ hướng dẫn cách di chuyển dữ liệu Redis từ server Ubuntu 14.04 sang một server tương tự bằng cách sử dụng bản sao master-slave. Điều này liên quan đến việc cài đặt một server Redis mới, cấu hình nó trở thành server của server hiện tại (tức là server ), sau đó thăng cấp server thành server sau khi quá trình di chuyển hoàn tất.

Yêu cầu

Để làm theo bài viết này, bạn cần một server Redis chính với dữ liệu bạn muốn xuất hoặc di chuyển và một server Redis mới thứ hai sẽ là server .

Cụ thể, đây là những yêu cầu cho Redis master.

Và đây là những yêu cầu để trở thành slaver của Redis.

Đảm bảo làm theo phần cấu hình server định danh trong hướng dẫn IPTables trên cả hai server ; không có nó, apt sẽ không hoạt động.

Bước 1 - Cập nhật Redis Master Firewall

Sau khi cài đặt và cấu hình Redis slave, những gì bạn có là hai server độc lập không giao tiếp vì các luật firewall . Trong bước này, ta sẽ khắc phục điều đó

Bản sửa lỗi liên quan đến việc thêm một ngoại lệ cho các luật TCP trên cái chính để cho phép lưu lượng Redis trên cổng 6379. Vì vậy, trên cái chính, hãy mở file cấu hình IPTables cho các luật IPv4.

  • sudo nano /etc/iptables/rules.v4

Ngay bên dưới luật cho phép lưu lượng SSH, hãy thêm luật cho Redis cho phép lưu lượng trên cổng Redis chỉ từ địa chỉ IP của slaver . Đảm bảo cập nhật your_slave_ip_address thành địa chỉ IP của server slaver .

/etc/iptables/rules.v4
. . . # Acceptable TCP traffic -A TCP -p tcp --dport 22 -j ACCEPT -A TCP -p tcp -s your_slave_ip_address --dport 6379 -j ACCEPT . . . 

Điều này rất hạn chế và an toàn hơn. Nếu không, server sẽ chấp nhận lưu lượng truy cập từ bất kỳ server nào trên cổng Redis.

Khởi động lại IPTables để áp dụng luật mới.

  • sudo service iptables-persistent restart

Bây giờ hệ thống nhân bản đã được khởi động và firewall trên server đã được cấu hình để cho phép lưu lượng Redis, ta có thể xác minh cả hai server có thể giao tiếp. Điều đó có thể được thực hiện với các hướng dẫn được đưa ra trong Bước 4 của hướng dẫn cụm Redis này .

Bước 2 - Xác minh Nhập dữ liệu

Nếu cả hai server đã cài đặt liên hệ, quá trình nhập dữ liệu từ server đến server sẽ tự động bắt đầu. Đến đây bạn chỉ phải xác minh nó đã và đã hoàn tất thành công. Có nhiều cách để xác minh điều đó.

Thư mục dữ liệu Redis

Một cách để xác minh nhập dữ liệu thành công là xem trong folder dữ liệu Redis. Các file tương tự trên file chính bây giờ sẽ ở trên file slaver . Nếu bạn liệt kê dài các file trong folder dữ liệu Redis của server slaver bằng cách sử dụng lệnh này:

  • ls -lh /var/lib/redis

Bạn sẽ nhận được kết quả như sau:

Đầu ra
 total 32M -rw-r----- 1 redis redis 19M Oct  6 22:53 appendonly.aof -rw-rw---- 1 redis redis 13M Oct  6 22:53 dump.rdb 

Dòng lệnh Redis

Một phương pháp khác để xác minh việc nhập dữ liệu là từ dòng lệnh Redis. Nhập dòng lệnh trên server slaver .

  • redis-cli

Sau đó xác thực và đưa ra lệnh info

  • auth insert-redis-password-here
  • info

Trong kết quả kết quả , số lượng khóa trong # Keyspace phải giống nhau trên cả hai server . Đầu ra bên dưới được lấy từ server phụ, hoàn toàn giống với kết quả trên server chính.

Đầu ra
# Keyspace db0:keys=26378,expires=0,avg_ttl=0 

Quét các phím

Tuy nhiên, một phương pháp khác để xác minh server hiện có cùng dữ liệu trên server là sử dụng lệnh scan từ dòng lệnh Redis. Mặc dù kết quả từ lệnh đó không phải lúc nào cũng giống nhau trên cả hai server , khi được phát hành trên server , ít nhất nó sẽ cho phép bạn xác nhận server có dữ liệu mà bạn mong đợi tìm thấy trên đó.

Dưới đây là ví dụ kết quả từ server thử nghiệm được sử dụng cho bài viết này. Lưu ý đối số của lệnh scan chỉ là một số bất kỳ và hoạt động như một con trỏ:

  • scan 0

Đầu ra phải giống như sau :

Đầu ra
1) "17408" 2)  1) "uid:5358:ip"     2) "nodebbpostsearch:object:422"     3) "uid:4163:ip"     4) "user:15682"     5) "user:1635"     6) "nodebbpostsearch:word:HRT"     7) "uid:6970:ip"     8) "user:15641"     9) "tid:10:posts"    10) "nodebbpostsearch:word:AKL"    11) "user:4648" 127.0.0.1:6379> 

Bước 3 - Thăng cấp Slave lên Master

Khi bạn đã xác nhận slaver có tất cả dữ liệu, bạn có thể thăng cấp nó lên thành chủ. Điều này cũng được đề cập trong Bước 5 của hướng dẫn cụm Redis , nhưng để đơn giản hơn, các hướng dẫn cũng ở đây.

Đầu tiên, nhập dòng lệnh Redis trên slaver .

  • redis-cli

Sau khi xác thực, hãy đưa ra lệnh slaveof no one để thăng cấp nó thành chủ.

  • auth your_redis_password
  • slaveof no one

Bạn sẽ nhận được kết quả này:

Đầu ra
OK 

Sau đó, sử dụng lệnh info để xác minh.

  • info

Đầu ra có liên quan trong phần Replication sẽ giống như thế này. Đặc biệt, role: master line cho thấy rằng slaver bây giờ là chủ.

Đầu ra
# Replication role:master connected_slaves:0 master_repl_offset:11705 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 

Sau đó, một mục nhập duy nhất trong file log của chủ cũ cũng sẽ xác nhận điều đó.

/var/log/redis/redis-server.log
 14613:M 07 Oct 14:03:44.159 # Connection with slave 192.168.1.8:6379 lost. 

Và trên chủ mới (trước đây là slaver ), bạn sẽ thấy:

/var/log/redis/redis-server.log
14573:M 07 Oct 14:03:44.150 # Connection with master lost. 14573:M 07 Oct 14:03:44.150 * Caching the disconnected master state. 14573:M 07 Oct 14:03:44.151 * Discarding previously cached master state. 14573:M 07 Oct 14:03:44.151 * MASTER MODE enabled (user request from 'id=4 addr=127.0.0.1:52055 fd=6 name= age=2225 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=slaveof') 

Đến đây, bây giờ bạn có thể kết nối các ứng dụng với database và bạn có thể xóa hoặc hủy bản root ban đầu.

Kết luận

Khi được thực hiện đúng cách, việc di chuyển dữ liệu Redis theo cách này là một nhiệm vụ đơn giản. Nguyên nhân chính của lỗi thường là quên sửa đổi firewall của server chính để cho phép lưu lượng Redis.

Bạn có thể tìm hiểu cách làm nhiều việc hơn với Redis bằng cách duyệt thêm các hướng dẫn khác của Redis .


Tags:

Các tin liên quan

Cách tìm log Redis trên Ubuntu
2016-03-01
Cách bảo mật cài đặt Redis của bạn trên Ubuntu 14.04
2015-09-25
Cách backup và khôi phục dữ liệu Redis của bạn trên Ubuntu 14.04
2015-09-14
Cách thiết lập server Redis làm Trình xử lý phiên cho PHP trên Ubuntu 14.04
2015-08-21
Cách cấu hình một cụm Redis trên CentOS 7
2015-07-30
Cách cấu hình cụm Redis trên Ubuntu 14.04
2015-07-16
Cách cấu hình bộ đệm Redis để tăng tốc WordPress trên Ubuntu 14.04
2014-12-15
Cách cấu hình giám sát Sensu, RabbitMQ và Redis trên Ubuntu 14.04
2014-09-29