mysql主从复制配置

时间:2022-05-06
本文章向大家介绍mysql主从复制配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

配置思路

1. 修改master和slave的配置文件,使用二进制日志,指定serverid

目的是让各自都有了自己的唯一标示,并以二进制文件格式进行交流

2. master中创建授权用户,查看二进制日志文件名,及最新位置

让slave知道用哪个用户信息访问master,知道读取哪个日志文件,及从哪儿开始读

3. slave中使用被授权用户信息及日志文件信息,进行指向master

这时已经建立了和master的联系,明确了从哪儿读取日志文件

3. 执行启动slave的命令,开始主从复制,并查看复制状态信息

准备条件

停止对master数据库的操作

把master中的数据库全部导入到slave,使两边数据库完全一致

配置步骤

1. 修改配置文件 my.cnf

master:
[mysqld]
log-bin=mysql-bin   //[必须]启用二进制日志
server-id=222       //[必须]服务器唯一ID,默认是1,一般取IP最后一段
slave:
[mysqld]
log-bin=mysql-bin   
server-id=226       

2. 重新启动两台服务器的mysql

3. master创建授权用户

登陆主服务器mysql命令行,创建一个用于从服务器复制的用户

mysql>GRANT REPLICATION SLAVE ON *.* to '用户名'@'%' identified by '密码';

"*.*"表示对所有库的所有操作,“%”表示所有客户端都可能连,也可用具体客户端IP代替,如192.168.145.226,加强安全

4. 查看master状态

登陆主服务器mysql命令行

mysql>show master status;
   +-------------------------+----------+
   | File                         | Position |
   +-------------------------+----------+
   | mysql-bin.000002  |     1308 |
   +-------------------------+----------+

mysql-bin.000004 是用于主从复制的文件名

1308 是日志文件内的最新位置

5. slave指向master

登陆从服务器mysql命令行,使用之前创建的用户和master的日志文件及其位置

mysql>change master to master_host='master ip',master_user='用户名',master_password='密码',
  master_log_file='mysql-bin.000002',master_log_pos=1308;   //注意不要断开,“1308”无单引号。

6. 启动slave

mysql>start slave;

7. 查看slave状态

mysql> show slave statusG;

结果中有两个重要数据项:

1) Slave_IO_Running: Yes

IO线程状态,必须YES

2) Slave_SQL_Running: Yes

SQL线程状态,必须YES

常见的问题是SQL线程没有正常工作 Slave_SQL_Running: No

通常是两边的数据库不是完全对应的,需要确保master上的库及到目前为止的最新记录都复制到slave上了

8. 测试

当IO线程和SQL线程都正常后,到master中随意测试下插入、修改、删除操作,同时到slave中检查