mysql主从同步

一. 设置主库

1.1 修改my.conf

#配置主从复制

innodb_flush_log_at_trx_commit=1

sync_binlog=1  (每执行一个操作就写到日志文件中)

#需要备份的数据库  (多个以逗号分开)

binlog-do-db=test

#不需要备份的数据库 

binlog-ignore-db=mysql,performance_schema,information_schema

#启动二进制文件 

log-bin=mysql-bin

#服务器ID  (服务器id以ip的末位为标识比较好)

server-id=101

重启mysql服务

Systemctl restart mysql

1.2 创建主从复制账户

grant replication slave on *.* to ‘slave ‘@’%’ identified by '123456’; 配置主从复制权限, 并创建账户

1.3 锁定主库, 禁止写入

flushtables with read lock;

解锁命令: unlock tables; 完成主从关联时解锁

1.4 查看主数据库同步相关值

show master status;

查看主数据库信息,记住下面的 File ”与“ Position 的信息,它们是用来配置从数据库的关键信息。可以看到下面同步的数据库的“test”数据库, 主从数据库如果数据不一样 , 请先手动同步主从的数据

此处:    file: mysql-bin.000001         position: 319

二. 设置从库

2.1 修改my.conf

Server-id=102   此处为ip末位比较好

2.2 配置连接主库

mysql> change master tomaster_host='192.168.136.101',   主库ip

    -> master_user='slave',         主库可用于同步的用户名

     -> master_password='123456',   密码

     -> master_log_file='mysql-bin.000001',  主库同步的二进制文件名(同上)

     -> master_log_pos=319,    主库同步的日志位置(同上)

    -> master_connect_retry=10;  主库连接重试10次

Query OK, 0 rows affected, 2 warnings (0.03 sec)开始同步

2.3 开始同步

mysql>start slave;

2.4 查看同步状态

Mysql> show slave status\G;

正常状态:

Slave_IO_Running:Yes

Slave_SQL_Running: Yes

2.5 可能出现的问题

2.5.1 Slave_IO_Running:no

原因分析:

1.      My.cnf中的server_id一致

Data文件夹中的auto.cnf中的server_id一致. 若克隆的虚拟机, 一定有改问题. 删除改文件, 重启mysql服务, 自动生成一次

2.5.2 Slave_SQL_Running: no

原因分析: 主从数据不同步.

         停止同步:mysql> stop slave;

手动同步主从库

         导出主库. 锁住主库. 从库数据导入

2.6 停止同步

Stopslave;

2.7 配置成功, 对主库解锁

Mysql>unlock tables;

三. 主从同步延迟解决方案

3.1 写 成功时将数据写入到缓存中, 读操作先读缓存 

你可能感兴趣的:(mysql,主从同步,mysql)