配置MySql主从同步

本文详细介绍了如何配置MySQL主从同步,包括安装环境、主服务器和从服务器的配置步骤,以及可能出现的问题和解决办法。重点强调了版本匹配的重要性以及主从同步过程中涉及的配置参数。

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

一.安装环境

Mysql安装教程见CentOS笔记
操作系统:CentOS 6或者7
数据库版本:MySql 5.6或者Mysql 5.7[最好保持一致,不一致也不要相差太大,5.6作为一个分界点,上下相差有些大,建议不要跨;如果版本不一致,官方说master的版本低于slave的版本没什么问题,但是反过来就会有很多问题。原因是比如新版本有一些功能老版本不支持,然后master上执行了这些操作,同步到slave上就会有问题。]
记得开放数据库端口

二.Master的配置

2.1 修改配置文件

  1. 修改mysql配置文件
#linux
vi /etc/my.cnf
#windows
修改my.ini文件
  1. 在该文件下[mysqld]中指定Master的配置如下:
#服务器唯一ID,一般取IP最后一段
server-id=138
#主从复制的数据库的名字,不设置表示发送所有,多个用逗号隔开
#binlog-do-db=master
#忽略mysql数据库,多个用逗号隔开
binlog-ignore-db=information_schema,performance_schema,mysql
#启用二进制日志,主库必须开启
log-bin=mysql-bin
#skip-name-resolve
#binlog过期清理时间
#expire_logs_days = 7
#binlog每个日志文件大小
#max_binlog_size 100m

2.2 重启MySql

#linux
service mysqld restart
#windows
net stop mysql
net start mysql

2.3 登录MySql

mysql [-h host] -u username -p
输入对应的密码
或
mysql [-hhost] -uusername -ppassword
直接登录

2.4 建立帐户并授权slave

  1. 建立帐户并授权
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';

注意:一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
2. 刷新权限

mysql> FLUSH PRIVILEGES;

2.5 显示主库信息

mysql>show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000005 |     5772 | mstest       | information_schema,mysql |                   |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)

这里的 File 、Position是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB表示Ignore的数据库,这些都是在配置的时候进行指定的。

三.Slave的配置

3.1 修改配置文件

  1. 修改mysql配置文件
#linux
vi /etc/my.cnf
#windows
修改my.ini文件
  1. 在该文件下[mysqld]中指定Slave的配置如下:
#服务器唯一ID,一般取IP最后一段
server-id=134
#跳过所有错误
slave-skip-errors=all
#该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志。用于链式复制服务器或者从服务器用来做增量备份
#log_slave_updates = 1
#设定需要复制的数据库(多数据库使用逗号,隔开)
#replicate-do-db    
#如果库名不同,使用这个。
replicate-rewrite-db = kintech_pd -> kps_common
#忽略mysql数据库,多个用逗号隔开
#replicate-ignore-db 
#设定需要复制的表
#replicate-do-table  
#设定需要忽略的复制表 
#replicate-ignore-table 
#同replication-do-table功能一样,但是可以通配符
#replicate-wild-do-table 
#同replication-ignore-table功能一样,但是可以加通配符
#replicate-wild-ignore-table 

3.2 重启MySql

#linux
service mysqld restart
#windows
net stop mysql
net start mysql

3.3 登录MySql

mysql [-h host] -u username -p
输入对应的密码
或
mysql [-hhost] -uusername -ppassword
直接登录

3.4 配置从服务器

mysql>change master to master_host='192.168.137.16',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=120;

注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。

3.5 启动从服务器复制功能

Mysql>start slave;

3.6 检查从服务器复制功能状态

mysql> show slave status\G;

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)

四.参考文档

Mycat实现Mysql主从复制和读写分离
MySQL5.6 数据库主从(Master/Slave)同步配置详解
mysql主从只同步部分库或表
Mysql数据库之Binlog日志使用总结

五.遇到的问题

  • Slave_IO_Running: No
    mysql版本不一致的问题,官方说master的版本低于slave的版本没什么问题,但是反过来就会有很多问题。原因是比如新版本有一些功能老版本不支持,然后master上执行了这些操作,同步到slave上就会有问题。
  • Unknown system variable ‘binlog_checksum’
    查找得知 binlog_checksum 只在mysql5.6.2以上版本出现,低于以下版本的情况下为binlog_checksum=none

六.名词解释

  • 中继日志[relay log]

relay log很多方面都跟binary log差不多.
从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致.说白了就是主服务器的bin-log文件流读过来再存在本地,换个名字.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值