mysql主从复制

设置主库(Master)
修改配置

/etc/my.cnf(windows系统my.ini)

[mysqld]

binlog-format=row
server-id=1                 # 主库的唯一 ID
log-bin=mysql-bin           # 启用二进制日志,主从复制依赖于此
binlog-do-db=your_database  # 需要同步的数据库名称,多个数据库可添加多行

binlog-do-db=database1
binlog-do-db=database2

重启 MySQL 服务
创建用于复制的用户
-- 创建slave用户
CREATE USER 'slave_test'@'%';
-- 设置密码
ALTER USER 'slave_test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave_test'@'%';
查看主库状态
SHOW MASTER STATUS;

File:当前的二进制日志文件名。
Position:二进制日志的偏移量,从该位置开始读取数据。

设置从库(Slave)
修改配置

[mysqld]
server-id=2                 # 从库的唯一 ID,不能与主库或其他从库相同
relay-log=relay-log         # 设置中继日志文件名前缀
read-only=1                 # 设置只读模式,防止误操作
重启 MySQL 服务

连接到主库
CHANGE MASTER TO MASTER_HOST='xx', 
MASTER_USER='slave_test',MASTER_PASSWORD='123456', MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000021',MASTER_LOG_POS=2522041; 

MASTER_HOST:主库的 IP 地址。
MASTER_USER:在主库上创建的用于复制的用户。
MASTER_PASSWORD:复制用户的密码。
MASTER_LOG_FILE:主库的二进制日志文件名。
MASTER_LOG_POS:二进制日志的位置偏移量。

启动复制进程
START SLAVE;
查看从库状态
SHOW SLAVE STATUS

Slave_IO_Running:应为 Yes,表示从库的 IO 线程正在读取主库的日志。
Slave_SQL_Running:应为 Yes,表示从库的 SQL 线程正在执行主库传递的日志。
Last_IO_Error 和 Last_SQL_Error:如果存在错误信息,会在此处显示

验证主从复制是否成功

在主库上创建测试数据

DROP TABLE IF EXISTS test; 
CREATE TABLE test (id INT (11) NOT NULL AUTO_INCREMENT,name VARCHAR (50) DEFAULT NULL,PRIMARY KEY (id)) DEFAULT CHARSET=utf8mb4; 
INSERT INTO test (id,name) VALUES (1,'Test Data');

在从库上检查数据同步情况

SELECT*FROM test;

修改异常

Could not execute Update_rows event on table xx.sys_one_click_import_details; Can't find record in 'sys_one_click_import_details', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000022, end_log_pos 1290280

查看异常

bin\mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS Data\mysql-bin.000022 > 1290280.log

linux使用

/usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.000022 | grep -A '10' 1290280

修改从库配置

vim /etc/my.cnf

slave-skip-errors = 1032

重启数据库,重新连接到主库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值