MySQL同步配置方案
一 安装
首先安装好单台主机的数据库,然后对不同的同步方案给出不同的方法。
1.$su
2.#/etc/init.d/mysql stop(停止数据库服务)
3.#dpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P (卸载数据库选是,执行时会提示某些包卸载失败,可忽略)
4.#rm -rf /etc/mysql/*(移除数据库文件)
5.#rm -rf /var/lib/mysql/*(移除数据库文件)
若MySQL版本为5.5.55
vi /etc/mysql/my.cnf
修改47行为 #bind-address =127.0.0.1前面加 #
若MySQL版本为5.7.30
vi /etc/mysql/mysql.conf.d/mysqld.cnf
修改35行为 #bind-address =127.0.0.1前面加 #
mysql -uroot -p123456
mysql>use mysql;
mysql>select host, user from user;
mysql>update user set host='%' where user='root';
mysql>\q;
/etc/init.d/mysql restart
二 手动重置master状态
在配置备机时,一般会看下主机的状态,记下File和Position,后面的命令中master_log_file='mysql-bin.000001',master_log_pos=1需要改为对应的。也可以先重置一下master。
三 双主一从配置
前面的双主配置其实就是两台主机互为主备,要想增加一台从机的话就需要用到通道(MySQL5.7及以上)。
每一台服务器都需要编辑my.cnf。
注释掉#log-slave-updates。级联同步的情况下需要,我们这里注释掉,不然会无限复制同一条记录。
增加如下配置:
master_info_repository=table
relay_log_info_repository=table
第一台主机配置
重启MySQL,/etc/init.d/mysql restart
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.241',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '1-0';
第二台主机配置
重启MySQL,/etc/init.d/mysql restart
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.240',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '0-1';
第三台从机配置
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.240',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '0-2';
mysql> change master to master_host='192.168.81.241',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '1-2';
四 多主配置
三台及以上主机,任意两台之间都是互为主备。针对每一台主机,分别做change master操作,当然也需要用到通道(MySQL5.7及以上)。
每一台服务器都需要编辑my.cnf。
注释掉#log-slave-updates。级联同步的情况下需要,我们这里注释掉,不然会无限复制同一条记录。
增加如下配置:
master_info_repository=table
relay_log_info_repository=table
第一台主机配置
重启MySQL,/etc/init.d/mysql restart
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.241',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '1-0';
mysql> change master to master_host='192.168.81.242',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '2-0';
第二台主机配置
重启MySQL,/etc/init.d/mysql restart
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.240',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '0-1';
mysql> change master to master_host='192.168.81.242',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '2-1';
第三台从机配置
进入MySQL命令行mysql -uroot -p123456
mysql> change master to master_host='192.168.81.240',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '0-2';
mysql> change master to master_host='192.168.81.241',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1 for channel '1-2';