mysql主从复制配置

本文详细介绍了MySQL主从复制的配置过程,包括主服务器和从服务器的配置文件修改,账号权限设置,主从状态的查看和验证,以及解决不同版本间checksum问题的方法。

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

1、准备工作

主从数据库版本最好一致

主从数据库内数据保持一致

我的主从服务器的IP为:

主服务器ip:192.168.84.128
从服务器ip:192.168.0.100

2、找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/my.cnf,在[mysqld]部分插入如下三行:

log-bin=mysql-bin  #开启二进制日志
server-id=1  #设置server-id server-id要唯一
binlog_do_db=test  #设置开启二进制日志文件的数据库,也就是要同步的数据库
binlog_format=mixed  #二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed

配置完重启mysql

3、在主数据库创建用于同步的账号

mysql> GRANT replication slave ON *.* TO 'myuser'@'192.168.0.100' IDENTIFIED BY 'mypassword'; #分配权限

mysql>flush privileges;   #刷新权限

4、查看master状态,记录二进制文件名(mysql-bin.000004)和位置(120 ):
mysql > show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 120       | test          |     |
+------------------+----------+--------------+------------------+

5、找到从服务器的配置文件,添加server-id
[mysqld]
server-id=2 #设置server-id,必须唯一
重启mysql

6、从数据库打开mysql命令行,执行以下命令

mysql > stop slave;

注意必须先关闭slave

mysql> change master to
    ->     master_host='192.168.84.128',
    ->     master_user='myuser',
    ->     master_password='mypassword',
    ->     master_log_file='mysql-bin.000004',
    ->     master_log_pos=120;

其中master_host,master_user,master_password,master_log_filemaster_log_pos分别为主数据库的IP,用于同步的账户和密码,二进制日志文件,日志的位置

mysql>start slave;

7、查看slave状态
mysql> show slave status\G;

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了

8、另外

主数据库可以配置下面这些
# 不同步哪些数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = information_schema  
# 只同步哪些数据库,除此之外,其他不同步  
binlog-do-db = test

查看数据库日志文件方法
mysqlbinlog /usr/local/mysql/data/mysql-bin.000004 > 4.txt     #其中/usr/local/mysql/data/为数据库日志文件目录

4.txt文件将出现在/home目录

若从数据库版本为5.5的,主数据库是5.6的,出现下面错误

报错现象:
 Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000004' at 4, the last event read from './mysql-bin.000004' at 120, the last byte read from '/usr/local/mysql/data/mysql-bin.000004' at 120.'
现象分析:这是不同版本间出现的checksum的问题,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none。
解决方法:
在高版本上启动binlog_checksum=none,然后跳过现有的采用checksum的事件(当然也可以flush logs,然后指向binlog日志文件的最新位置)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值