others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

mysql mariadb 在线搭建主从服务器

访问量:1395 创建时间:2020-02-27

为什么在线做主从,因为从库作为备库使用,但是由于一些原因同步失败了,并且不能恢复正常同步。

前提需求:

备份主数据库

使用下面的命令备份全部数据库(因为我的mysql中跑了很多个库,选择全部备份) --master-data=2 作用是将主数据库备份时的bin-log文件名和pos位置保存在备份文件中。 可以选择在使用人少的时候备份(数据量大可以在凌晨设置计划任务备份)。

[root@metadata1 ~]# mysqldump -uroot -p  --single-transaction --no-autocommit --master-data=2 -A > /var/mysqlback20200227.sql
#将备份的sql文件scp到从库的机器上
[root@metadata1 ~]# scp /var/mysqlback20200227.sql ******:/data/

将sql文件导入从数据库

数据量很大的话可以用screen运行source语句。 注意导入时可能因为语句太大导致导入失败。如果出现'time_zone' can't be set to the value of 'NULL',将mysql配置文件[mysqld]添加max_allowed_packet=1024M

在从库导入sql文件

MariaDB [(none)]> source /data/mysqlback20200227.sql

mysql从库开启新的同步

先查看sql文件中记录的mysql主库的bin-log文件名和pos位置编号。

[root@metadata2 ~]# head -n100 /data/mysqlback20200227.sql | grep 'CHANGE MASTER TO'
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000933', MASTER_LOG_POS=955274291;

在mysql从库执行同步命令

MariaDB [(none)]> reset slave all;
MariaDB [(none)]> change master to master_host='10.0.0.18', master_user='yourreplusername', master_password='yourmysqlreplpassword', master_log_file='mysql-bin.000933', master_log_pos=955274291;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

至此mysql主从在线实时搭建完成。

登陆评论: 使用GITHUB登陆