目的:通过配置主从复制,将131数据库配置为master(主),132数据库配置为slave(从),131更新数据可实时同步到132数据库。实现131宕机后可切换到132维持网站正常运作。
现状:
【1】131、132的主从复制功能未打开。
【2】131数据库已存在数据:
【3】132数据库无数据:
预计效果:配置成功
操作步骤:
- 同步131与132 Linux服务器时间。
- 教程 https://blog.csdn.net/yabingshi_tech/article/details/121382566
- 1.安装ntp:
- cd ntp-4.2.8p15/
- ./configure --prefix=/usr/local/ntp-4.2.8p15 --enable-all-clocks --enable-parse-clocks
- make
- make install
- ln -s /usr/local/ntp-4.2.8p15 /usr/local/ntp
- vi /root/.bash_profile
- 在PATH这行末尾添加【 :/usr/local/ntp/bin 】
- source /root/.bash_profile
- 2.配置131:
- vi /etc/ntp.conf
- 添加:【
- interface listen 0.0.0.0
- server 127.127.1.0
- fudge 127.127.1.0 stratum 10
- restrict xxx.xx.xx.0 mask 255.255.255.0 nomodify notrap
- 】
- /usr/local/ntp/bin/ntpd -c /etc/ntp.conf -l /usr/local/ntp/ntp.log
- vi /etc/rc.d/rc.local
- 添加:
- /usr/local/ntp/bin/ntpd -c /etc/ntp.conf -l /usr/local/ntp/ntp.log
- 3.配置132:
- /usr/local/ntp/bin/ntpdate xxx.xx.xx.131 命令失败,时区错误
- 修改时区:教程https://blog.csdn.net/weixin_33810302/article/details/92991000?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-92991000-blog-113311984.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-92991000-blog-113311984.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2
- /usr/local/ntp/bin/ntpdate xxx.xx.xx.131
- crontab -e
- 添加:
- */30 * * * * /usr/local/ntp/bin/ntpdate xxx.xx.xx.131
- 主从复制配置
Master(主):131
Slave(从):132
- 导出131数据库中的旧数据
mysqldump -uroot -p --databases [DataBase1] > /opt/[DataBase1].sql
mysqldump -uroot -p --databases [DataBase2] > /opt/[DataBase2].sql
- 发送到132服务器,并导入数据库
scp ./[DataBase1].sql root@xxx.xx.xx.132:/opt
scp ./[DataBase2].sql root@xxx.xx.xx.132:/opt
mysql -uroot -p < /opt/[DataBase1].sql
mysql -uroot -p < /opt/[DataBase2].sql
- 修改131my.cnf配置,并重启mysql服务
vi /etc/my.cnf 添加
(参数:log-bin,服务id唯一,需要复制的库,需要复制的库)
- 131 mysql中创建一个slave用户并且授权来自132的ip地址可以访问131数据。grant replication slave on *.* to slave@'xxx.xx.xx.132' identified by 'trsAdmin@2019';
- 131查看show master status;
前两个字段值需要关注(每次不固定),后续有用
- 修改132my.cnf配置,并重启mysql服务
vi /etc/my.cnf 添加
- 132 mysql 执行,绑定master:
CHANGE MASTER TO MASTER_HOST='xxx.xx.xx.131', MASTER_PORT=3306, MASTER_USER='slave', MASTER_PASSWORD='密码', MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=154;
MASTER_HOST 主服务器ip
MASTER_USER 步骤4创建的授权用户名
MASTER_PASSWORD 上述用户登录密码
MASTER_LOG_FILE,MASTER_LOG_POS 步骤5的前两个字段(请再次执行步骤5确认字段值未改变)
(备注:Reset slave命令 可用于取消上述命令)
- 132 mysql开启slave
start slave;
(关闭命令:stop slave)
- 132 mysql查看状态
show slave status\G;
(两个yes表示配置成功,如果出现其他状态,代表失败)
- 测试
- 测试实时备份功能是否成功
1.1、131 [DataBase1]库新建testdb表,切换到132数据库查看
发现bug:二、3中配置的数据库名写错了,trswas应改成[DataBase1]
修改bug过程:
1、132 mysql中执行 stop slave; reset slave;
2、131修改my.cnf中错误库名
3、131中执行service mysqld restart
4、131数据库出查看show master status,关注前两个字段
5、132 mysql中执行二、7的命令(参数修改为上一步骤重新获取的两个字段值)
6、132 mysql中执行start slave;
7、132 mysql中执行二、9命令检查双yes
1.2、重新测试在131中的[DataBase1]与[DataBase2]库中新建与删除数据表。132同步成功。
2. 测试数据一致性
需安装percona-toolkit及其依赖的perl-devel
现阶段数据是一致的,请确实是否有必要测试
-------------------------------
感谢参考:
mysql从服务器配置_mysql主从服务器配置基础教程_vaba的博客-CSDN博客
mysql主从复制配置_hmb↑的博客-CSDN博客_mysql主从复制配置
Mysql主从同步时Slave_IO_Running:Connecting ; Slave_SQL_Running:Yes的情况故障排除_MegaBytes的博客-CSDN博客