1、MySql主从同步是基于二进制日志实现的,二进制日志记录了主服务器数据库的所有变动,从服务器通过读取和执行该日志文件保持和主数据库的数据一致;
2、配置主服务器
a、开启二进制日志,找到MySql配置文件 my.cnf 在[mysqld]模块下加入如下代码;
server-id=30 // 唯一id log-bin = "D:/mysqllog/ddt_binlog.log" // 日志保存位置
b、登录MySql,创建只能进行主从同步的用户;
mysql > grant replication slave on *.* to 'zzw'@'192.168.1.1' identified by ''; // zzw 用户名 123456 密码 192.168.1.1 从服务器IP
c、刷新表,锁表,阻止写入数据;
mysql > flush tables with read lock; // 锁表防止所有写操作
d、获取二进制日志信息,记录 File 和 Position 值;
e、导入数据(将主库现有数据导入从库,主库无数据此步略):Navicat 连接主服务器的数据库,在菜单栏选择工具----->数据传输,选择主、从库服务器IP和同步的表或库,同步数据;还可以将主库数据库备份到sql文件还原到从库;
f、解锁表,恢复主库操作;
mysql > unlock tables;
3、配置从服务器
a、开启二进制日志,找到MySql配置文件 my.cnf 在[mysqld]模块下加入如下代码;
server-id = 192 // 唯一id log-bin = "D:/mysqllog/ddt_binlog.log" // 日志保存位置
b、配置同步参数;
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.1', // 主库服务器IP
master_port = 3306,
MASTER_USER='zzw', // 用户名
MASTER_PASSWORD='', // 密码
MASTER_LOG_FILE='ddt_binlog.000019', // 上面记录主库的File值
MASTER_LOG_POS = 572109; // 上面记录主库的Position值
c、启动主从同步进程;
mysql > start slave;
d、检查主从同步是否成功 Slave_IO_Running: Yes Slave_SQL_Running: Yes 即表示同步配置成功;
mysql > show slave status \G