一、一主多从配置
此次操作实现的是一主两从的方式。主服务器slave2(2.100),从服务器slave2-1(2.107),slave2-2(2.108);
第一:准备主数据库
1. 在不同的机器上分别建立slave2(主库) 和需要进行备份的从库 slave2-1 和slave2-2;
设置各个数据库的server-id,同时开启各自的binlog日志,并启动mysql数据库
2. 在主库slave2上创建进行远程访问的用户和密码
2.1 #>mysql -uroot -proot
2.2 mysql> create user mysync;
// * 注意 mysync 用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为q123456。
// * 说明一下192.168.0.%,这个配置是指明mysync用户所在服务器,这里%是通配符,表示192.168.2.0-192.168.2.255的Server都可以以mysync用户登陆主服务器。当然你也可以指定固定Ip。
// * mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.2.%' IDENTIFIED BY 'q123456'; 此处@后面跟了ip地址,表示为指定ip地址段的服务器可以登录主服务器
2.3 mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY 'q123456';
3. 获取主库上binlog的位置
mysql> show master status;
记住显示的 File | Position 的值
// *我此次的 file名是:slave1-bin.000001,Position值为:825
第二步:导出主服务器Mysql库中的数据
1. 导出主服务器上test数据库的数据
#> mysqldump -uroot -proot test > /test_bnk.txt;
2. 将导出的数据库文件传递到从库所在的服务器,并导入从库的数据库
#> scp /test_bnk.txt root@192.168.2.107:/
#> scp /test_bnk.txt root@192.168.2.108:/
#> mysql -uroot -proot test < /test_bnk.txt;
// *此命令在107和108服务器上分别执行
3. 从服务器初始化配置
3.1 在107服务和108服务器上分别执行
#>mysql -uroot -proot
3.2 停止slave服务
mysql>stop slave;
3.3 重置slave日志
mysql>reset slave;
3.4 重置master日志
mysql>reset master;
3.5 设置从库对应的主库配置
mysql>
change master to master_host='192.168.2.100',
master_user='mysync',
master_password='q123456',
master_log_file='slave2-bin.000001',
master_log_pos=804;
3.6 重新启动slave服务
mysql> start slave;
3.7 验证从库的状态
mysql> show slave status G;
如果Slave_IO_Running 和 Slave_SQL_Running都为 Yes,而且没有出现error的字样,并验证Master_%等相关配置是否正确
第三步:登录数据库,在slave2上进行增删改查操作,然后在 slave2-1和slave2-2上进行验证.
二、 读写分离
参考:https://www.cnblogs.com/fyc119/p/7529902.html