MySql 主从配置(一主多从)

时间:2022-09-14 13:59:24
此次操作实现的是一主两从的方式。主服务器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上进行验证.