目的
偶尔要给客户配置主从复制,每次都要从网上查资料,太麻烦,就自己搬运一个备用一下,原理啥的就不说了,直接上步骤:
1.在主服务器上,必须开启二进制日志机制和配置一个独立的ID
2.在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
3.在开始复制进程前,在主服务器上记录二进制文件的位置信息
4.如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
5.配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置
一、主服务配置
1、创建用户
CREATE USER ‘shunda’@‘172.18.1.%’ IDENTIFIED WITH mysql_native_password BY ‘p@ssw0rd’;
grant replication client,replication slave on . to ‘shunda’@‘172.18.1.%’;
FLUSH PRIVILEGES;
2、更改配置文件
首先检查你的主服务器上的my.cnf文件中是否已经在[mysqld]模块下配置了log-bin和server-id
[mysqld]
log-bin=mysql-bin
server-id=1

#选择增加的参数
binlog-do-db= 数据库名 #需要同步的数据库
binlog-ignore-db = 数据库名 #不需要同步的数据库
注意,如果需要同步多个库,需要把 binlog-do-db= 数据库名 写成多条
3、获取二进制日志的信息并导出数据库
登录mysql后执行:
show master status;

File的值是当前使用的二进制日志的文件名,Position是该日志里面的位置信息(不需要纠结这个究竟代表什么),记住这两个值,会在下面配置从服务器时用到。
另外,在实际过程中,同步数据之前,要点当前数据库导出一下,所以在导出之前,刷新所有的表,同时给数据库加上一把锁,阻止对数据库进行任何的写操作,命令如下:
flush tables with read lock;
执行完了数据导出,解锁
unlock tables;
二、配置从服务器
1、先改配置:
server-id=2
忽略表
replicate-wild-ignore-table=mysql.*
replicate-wild-ignore-table=sys.*
如果有多个从服务器上,那么每个服务器上配置的server-id都必须不一致。从服务器上没必要配置log-bin,当然也可以配置log-bin选项,因为可以在从服务器上进行数据备份和灾难恢复,或者某一天让这个从服务器变成一个主服务器
2、配置同步参数
登陆mysql,输入如下信息:
CHANGE MASTER TO MASTER_HOST=‘172.18.1.102’, MASTER_USER=‘shunda’, MASTER_PASSWORD=‘p@ssw0rd’, MASTER_LOG_FILE=‘mysql-bin.000007’,MASTER_LOG_POS=156;

3、启动从服务
start slave;
4、检查状态
show slave status \G

这个地方很重要,一定要两个参数都是yes才可以
至此,主从配置完成,插入条试试应该可以了
参考博文:
https://blog.youkuaiyun.com/agonie201218/article/details/121499881
本文详细介绍了MySQL主从复制的配置过程,包括在主服务器上创建用户、更改配置文件、获取二进制日志信息,以及在从服务器上配置、启动从服务和检查复制状态。关键步骤包括设置log-bin、server-id,创建复制用户,配置从服务器的同步参数,并确保所有参数正常。
1330

被折叠的 条评论
为什么被折叠?



