主库
1. my.ini 新增配置
log-bin=mysql.bin
# 使binlog在每N次binlog写入后与硬盘同步
sync-binlog=1
# 1天时间自动清理二进制日志
expire_logs_days=1
# 需要同步的数据库
binlog-do-db=OCS
# Error Logging
log-error="WIN-1QQDRPR5R2M.err"
# Server Id.不能和从库id相同
server-id=1
2. 重启mysql,使用控制台登录mysql
mysql -uroot -p
3.创建从库授权用户
CREATE USER '账号'@'从库ip地址' IDENTIFIED BY '密码';
分配权限
GRANT ALL PRIVILEGES ON *.* TO '账号'@'从库ip地址' IDENTIFIED BY '密码' WITH GRANT OPTION;
5. 刷新权限
flush privileges;
6. 创建测试数据,查看主库状,得到file,position的值;
show master status \G
从库
1. my.ini 新增配置
# Server Id 不能和主库id相同
# bind-address=192.168.1.95
server-id=95
log_bin=mysql-bin
# 二进制日志自动删除的天数
expire_logs_days=1
2. 登录从库
3.将主库的demo数据库克隆一份到从库,并给test用户重新赋权限。
grant all privileges on *.* to '账号'@'%' identified by '密码' with grant option;
4.重启mysql
5. slave 与 master 建立连接,进行数据同步
CHANGE MASTER TO MASTER_HOST='主库ip地址', MASTER_USER='账号', MASTER_PASSWORD='密码',MASTER_PORT=3306,MASTER_LOG_FILE='mysql.000007', MASTER_LOG_POS=402394;
6. 主库删从库找不到数据跳过
set global sql_slave_skip_counter=1;
7. 启动slave
start slave;
8.查看从库状态
show slave status \G
遇到的问题
1. 在master上删除一条记录,而slave上找不到。
报错:
Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;
Can't find record in 't1',
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;
the event's master log mysql-bin.000006, end_log_pos 254
解决方法:
由于master要删除一条记录,而slave上找不到故报错,这种情况主上都将其删除了,那么从机可以直接跳过。可用命令:
stop slave;
set global sql_slave_skip_counter=1;
start slave;
2. 从库一直连接不上主库;
原因是主库不是3306端口,主库的端口没有开放出来;
互为主从
将以上配置反过来配置一遍即可
以上均为自己配置之后做得记录,若有错误还请指正