Linux下MySQL主从复制

本文详细介绍MySQL主从复制的配置流程,包括修改my.cnf配置文件,设置唯一server-id,建立rep账号,导出主库数据,导入从库,配置复制参数,以及验证复制结果。同时提供锁表、解锁、查看binlog状态等关键操作步骤。

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

修改my.cnf

vim /data/3306/my.cnf
[mysqld]
log-bin= /data/3306/log-bin
server-id= 6
vim /data/3307/my.cnf
[mysqld]
server-id= 7
  • 主库必须开启binlog,如果不是联级复制从库可以不用开启,但是server-id必须唯一
    重启数据库
/data/3306/mysql stop
/data/3306/mysql start
/data/3307/mysql stop
/data/3307/mysql start

检查数据库配置情况

mysql -S /data/3306/mysql.sock 
mysql> show variables like 'server_id';
mysql> show variables like 'log_bin';

在这里插入图片描述

在主库建立用于同步的rep账号

mysql>grant replication slave on *.* to rep@'10.0.0.%' identified by '111111';
mysql> flush privileges;
参数说明
replication slave主从同步用户的必须权限,不需要给其他权限
*.*表示所有表,也可以指定某个库下的某个表,例如:mysql.user,mysql库下的user表
rep@10.0.0.%rep为账号,10.0.0.%为授权主机网段,使用%表示允许整个10.0.0.0网段以rep用户访问
identified by设置密码
  • 检查已建立的账号
mysql> select user,host from mysql.user;

在这里插入图片描述

  • 查看用户权限
mysql>show grants for rep@'10.0.0.%';

在这里插入图片描述

对主数据库进行锁表

mysql>flush table with read lock;

引擎不同,锁表时间会受下面参数控制,锁表时如果超过设置时间不操作就会自动解锁
在这里插入图片描述
锁表控制参数,单位:秒,超过这个时间会自动解锁

锁表后查看主库binlog状态

  • 查看锁表后主库binlog信息
mysql>show master status; 

在这里插入图片描述

导出主库数据

锁表后一定要利用连接工具新开一个窗口导出数据,如果数据量大于50G,并且允许停机,可以停库直接打包数据文件进行迁移,那样更快

mysqldump -uroot -S /data/3306/mysql.sock --events -A -B |gzip >/data/mysql_bak.$(date +%F).sql.gz
ll /data/

在这里插入图片描述

  • 为确保在数据导出期间没有数据写入,再次查看binlog
mysql>show master status;

需保持导出数据前、后binlog一致

  • 导出数据库后可以解锁主库
msyql>unlock tables;

把主库数据导入到从库

  • 在从库解压主库备份文件
gzip -d mysql_bak.2018-12-29.sql.gz 
mysql -uroot -S /data/3307/mysql.sock < /data/mysql_bak.2018-12-29.sql

如果备份时用了-A参数,则在还原数据到3307时,登录3307密码也会和3306一致,因为3307的授权表也被覆盖了

登录从库,配置复制参数

change master to MASTER_HOST='10.0.0.200',MASTER_USER='rep',MASTER_PASSWORD='111111',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=324;

在这里插入图片描述

参数说明
MASTER_HOST主库ip
MASTER_PORT主库端口号
MASTER_USER用于进行复制的用户
MASTER_PASSWORD用户的密码
MASTER_LOG_FILE是在主库show master status时查看的binlog文件名,不能用空格
MASTER_LOG_POS在主库show master status时binlog的偏移量,不能有空格
  • 验证检查
cat /data/3307/data/master.info

在这里插入图片描述

开启复制

mysql>start slave;
mysql>show slave status;

在这里插入图片描述

验证主从复制结果

  • 主库
    在这里插入图片描述

  • 从库
    在这里插入图片描述

  • 在主库新建一个数据库

mysql>create database master;
mysql>show databases;

在这里插入图片描述

  • 从库查看
mysql>show databases;

在这里插入图片描述

其他

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项

  • 不同步哪些库
    binlog-ignore-db = mysql
    binlog-ignore-db = test
    binlog-ignore-db = information_schema

  • 只同步哪些库,除此之外不同步
    binlog-do-db = master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值