[root@redis-master ~]# docker exec -it redis-master redis-cli -p 6666 -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:master # 当前为主节点 connected_slaves:2 # 连接两个从节点 slave0:ip=172.19.0.102,port=7777,state=online,offset=42,lag=1 # 从节点1 slave1:ip=172.19.0.103,port=8888,state=online,offset=42,lag=1 # 从节点2 master_failover_state:no-failover master_replid:f0214d7b9870fe4c5cbabdddf1ee743317ae74e5 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:42 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:42
[root@redis-slave1 ~]# docker exec -it redis-slave1 redis-cli -p 7777 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:172.19.0.101 master_port:6666 master_link_status:up master_last_io_seconds_ago:10 master_sync_in_progress:0 slave_read_repl_offset:322 slave_repl_offset:322 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:f0214d7b9870fe4c5cbabdddf1ee743317ae74e5 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:322 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:15 repl_backlog_histlen:308
[root@redis-slave2 ~]# docker exec -it redis-slave2 redis-cli -p 8888 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:172.19.0.101 master_port:6666 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_read_repl_offset:420 slave_repl_offset:420 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:f0214d7b9870fe4c5cbabdddf1ee743317ae74e5 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:420 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:29 repl_backlog_histlen:392
5.测试主从复制
master
1 2 3 4 5 6
[root@redis-master ~]# docker exec -it redis-master redis-cli -p 6666 -a 123456 set name stave Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. OK # 成功写入数据 [root@redis-master ~]# docker exec -it redis-master redis-cli -p 6666 -a 123456 get name Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. "stave"# 成功读取
slave1
1 2 3 4 5 6 7
[root@redis-slave1 ~]# docker exec -it redis-slave1 redis-cli -p 7777 -a 123456 get name Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. "stave"# slave1 成功读取数据 [root@redis-slave1 ~]# docker exec -it redis-slave1 redis-cli -p 7777 -a 123456 set name stave Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. (error) READONLY You can't write against a read only replica. # 由于从节点只读,所以写入数据报错
slave2
1 2 3 4 5 6 7
[root@redis-slave2 ~]# docker exec -it redis-slave2 redis-cli -p 8888 -a 123456 get name Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. "stave" [root@redis-slave2 ~]# docker exec -it redis-slave2 redis-cli -p 8888 -a 123456 set name stave Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. (error) READONLY You can't write against a read only replica. # 同slave1,可以成功读取数据但不能写入数据
# slave1 [root@redis-slave1 /]# docker exec -it redis-slave1 redis-cli -p 7777 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:master connected_slaves:1 slave0:ip=172.19.0.103,port=8888,state=online,offset=180670,lag=1 master_failover_state:no-failover master_replid:8a814c929ed52b786c36b5d1e07ebad1b907a7dc master_replid2:e7107664d2c67a733e3f6901252ba88823eb51e6 master_repl_offset:180670 second_repl_offset:172840 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:15 repl_backlog_histlen:180656
# slave2 [root@node2 /]# docker exec -it redis-slave2 redis-cli -p 8888 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:172.19.0.102 master_port:7777 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_read_repl_offset:184084 slave_repl_offset:184084 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:8a814c929ed52b786c36b5d1e07ebad1b907a7dc master_replid2:e7107664d2c67a733e3f6901252ba88823eb51e6 master_repl_offset:184084 second_repl_offset:172840 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:29 repl_backlog_histlen:184056
[root@redis-master /]# docker exec -it redis-master redis-cli -p 6666 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:172.19.0.102 master_port:7777 master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_read_repl_offset:184150 slave_repl_offset:184150 master_link_down_since_seconds:-1 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:14a30a8a3b44d169f4dc071a059ab38be7b4759a master_replid2:e7107664d2c67a733e3f6901252ba88823eb51e6 master_repl_offset:184150 second_repl_offset:172840 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:172840 repl_backlog_histlen:11311
redis集群读取数据需要以 redis-cli -p 6381 -c 集群的方式连接,否则会添加数据时会出现 (error) MOVED 12706 192.168.8.89:6382
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[root@node2 ~]# docker exec -it redis-node-1 bash root@node2:/data# redis-cli -p 6381 -c 127.0.0.1:6381> set k1 v1 -> Redirected to slot [12706] located at 192.168.8.89:6383 OK 192.168.8.89:6383> set k2 v2 -> Redirected to slot [449] located at 192.168.8.89:6381 OK 192.168.8.89:6381> set k3 v3 OK 192.168.8.89:6381> 192.168.8.89:6381> set k4 v4 -> Redirected to slot [8455] located at 192.168.8.89:6382 OK 192.168.8.89:6382> 192.168.8.89:6382> keys * 1) "k4"
docker exec -it mysql_master /bin/bash mysql -u root -p #查看数据库 show databases; #切换到mysql库 use mysql; #创建master用户 create USER 'master'@'%' IDENTIFIED BY '123456'; grant all on *.* to 'master'@'%'; FLUSH PRIVILEGES;
docker exec -it mysql_slave /bin/bash mysql -u root -p #查看数据库 show databases; #切换到mysql库 use mysql; #创建slave用户 create USER 'slave'@'%' IDENTIFIED BY '123456'; grant all on *.* to 'slave'@'%'; FLUSH PRIVILEGES;
八、主库查看
1 2 3 4 5 6
show master status; 当在 MySQL 中执行 `SHOW MASTER STATUS;` 命令时,它会返回一行结果,通常包含如下几个字段: 1. File(文件名):这是二进制日志文件的名称。二进制日志文件记录了所有对数据库的更改操作,这些更改用于数据库的备份和复制。 2. Position(位置):这是在二进制日志文件中的位置,标记了数据库正在写入的具体位置。复制从这个位置开始。 3. Binlog_Do_DB(需要操作的数据库):这个字段指定了在主服务器上生成二进制日志文件时应记录的数据库。通常设置了一组数据库,只有这些数据库上的操作才会被记录。 4. Binlog_Ignore_DB(忽略操作的数据库):这个字段指定了在主服务器上生成二进制日志文件时应忽略的数据库。即使启用了全局日志记录,也不会记录这些数据库上的操作。