Mysql不停止主库做Slave ,mysqldump

本文介绍了一种无需重启主库即可完成MySQL主从配置的方法,包括创建同步账号、配置从库、备份及恢复主库等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 mysql服务器的主从配置,这样不但可以实现读写分离,也可以在主库死机后从备用库中恢复,如果有多个从库,还能实现集群,但是一直以来网上的很多教程都需要重启主库,在生产环境中这是不允许的,下面给大家一种不停止主库做从库的方法。

原有主库配置参数如下:
# vi my.cnf 
server-id = 1            #id要唯一 
log-bin = mysql-bin      #开启binlog日志

1. 主库创建同步账号
# mysql> grant replication slave on *.* to 'sync'@'192.168.18.%' identified by 'sync';

2. 从库配置MySQL
# vi my.cnf 
server-id = 3                                 #这个设置3 
log-bin = mysql-bin                     #开启binlog日志 
auto-increment-increment = 1   #这两个参数在Ubuntu系统中MySQL5.5以后都已经默认是1 
auto-increment-offset = 1          避免两台服务器同时做更新时自增长字段的值之间发生冲突
slave-skip-errors = all                #跳过主从复制出现的错误
log_slave_updates = 1     #开启从的binlog日志

3. 备份主库

# mysqldump -uroot -p --routines --single_transaction --master-data=2 --databases weibo > weibo.sql

参数说明:
–routines:导出存储过程和函数
–single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务。
–master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。

4. 把备份库拷贝到从库
# scp weibo.sql root@192.168.18.214:/home/root

5. 从库导入备份库
# mysql -uroot -p123 -e 'create database weibo;' 
# mysql -uroot -p123 weibo < weibo.sql

6. 在备份文件weibo.sql查看binlog和pos值
# head -25 weibo.sql        #大概22行
Screenshot-9

7. 从库设置从这个日志点同步,并启动
mysql> change master to master_host='192.168.18.212', 
    -> master_user='sync', 
    -> master_password='sync', 
    -> master_log_file='mysql-bin.000001', 
    -> master_log_pos=107;

mysql> start slave; 
mysql> show slave status\G;

                 Slave_IO_State: Waiting for master to send event 
                 Master_Host: 192.168.18.212 
                 Master_User: sync 
                 Master_Port: 3306 
                 Connect_Retry: 60 
                 Master_Log_File: mysql-bin.000001 
                 Read_Master_Log_Pos: 358 
                 Relay_Log_File: mysqld-relay-bin.000003 
                 Relay_Log_Pos: 504 
                 Relay_Master_Log_File: mysql-bin.000001 
                 Slave_IO_Running: Yes 
                 Slave_SQL_Running: Yes 
...... 
可以看到IO和SQL线程均为YES,说明主从配置成功。

Screenshot-10

8. 从库查看weibo库里面的表
mysql> show tables; 
+---------------------------+ 
| Tables_in_weibo     | 
+---------------------------+ 
|          test_tb               | 
+---------------------------+ 
发现刚才模拟创建的test_tb表已经同步过来!

MySQL Slave库恢复是指在主从复制的环境下,当从库出现异常或数据丢失时,需要将从库数据恢复到与主库一致的状态。下面是一次MySQL Slave库恢复的实战记录,供参考: 1. 确认从库数据丢失或异常情况 在主从复制的环境下,当从库出现异常或数据丢失时,需要先确认是从库数据丢失还是复制链路中出现问题。 可以通过以下方式进行确认: - 在从库上执行 SHOW SLAVE STATUS 命令,查看 Slave_IO_Running 和 Slave_SQL_Running 的状态,如果其中任意一个为 NO,则说明复制链路出现了问题; - 在从库上执行 SELECT COUNT(*) FROM 表名 命令,查看数据是否与主库一致,如果一致,则说明从库数据出现了异常或数据丢失。 2. 确认主库数据一致性 在从库数据出现异常或数据丢失之前,需要先确认主库数据是否一致,可以通过以下方式进行确认: - 在主库上执行 SELECT COUNT(*) FROM 表名 命令,查看数据数量与从库是否一致; - 在主库上执行 SHOW MASTER STATUS 命令,查看 File 和 Position 的值。 如果主库数据一致或者无法确认主库 File 和 Position 的值,则需要先进行主库数据修复。 3. 停止从库复制 在从库数据出现异常或数据丢失后,需要先停止从库复制,可以执行 STOP SLAVE 命令。 4. 备份主库数据 在进行从库恢复前,需要先对主库进行备份,可以通过以下方式进行备份: - 执行 mysqldump 命令备份主库数据; - 将主库数据目录进行复制备份。 5. 恢复从库数据 在备份主库数据后,需要将备份数据恢复到从库中,可以通过以下方式进行恢复: - 执行 mysql 命令将备份数据导入到从库中; - 将备份数据目录进行复制恢复。 6. 启动从库复制 在恢复从库数据后,需要启动从库复制,可以执行 START SLAVE 命令。 7. 确认从库数据一致性 在从库复制成功后,需要再次确认从库数据是否与主库一致,可以通过以下方式进行确认: - 在从库上执行 SELECT COUNT(*) FROM 表名 命令,查看数据数量与主库是否一致; - 在从库上执行 SHOW SLAVE STATUS 命令,查看 Slave_IO_Running 和 Slave_SQL_Running 的状态是否正常。 以上就是一次MySQL Slave库恢复的实战记录,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值