数据库主从过程出错

开始 134出现主从1206错误

Last_IO_Errno: 1236
 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size; the first event 'mysql-bin.000124' at 927763888, the last event read from './mysql-bin.000124' at 4, the last byte read from './mysql-bin.000124' at 4.'
 
我从网上找的方法
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000124', MASTER_LOG_POS=927763888;
不行,然后我又在主数据库中读取binlog文件
从而用一下命令
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000124', MASTER_LOG_POS=4;  
才行。这句命令的意思是从mysql-bin.000124的4位置开始执行主从同步。
但是我这值得这个点,太靠前了,从而引起了一系列的主从问题,让我修改了一下午也没有修改好。在一次修改中,发现进程没反应了,kill也不行 于是我就重启了mysql 发现重启不了
由此我经历了一次mysql的洗礼
看日志发现磁盘满了,我就删文件,由于产生了很好mysql-relay-bin.000001文件,眼花了,就把所有的bin-log文件都删了,就更不能启动了,于是又删了mysql-bin.index,才能启动,但是由于原来的bin-log文件都没了,也就不能再继续原来的主从了,只能从现在的位置开始新的主从,相当于重新设置主从  就是在主数据库中执行 show master status \G 
然后在从数据库中执行 
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000124', MASTER_LOG_POS=xxxxxxxx;
主从启动,由于字符集的原来产生了一些错误,实在是多,跳过好多次,于是就在配置文件、etc/my.cnf中设置slave-skip-errors = 1062跳过主从1062错误   才可以正常主从。但产生的后果是中间修复主从时间内的数据没有同步
于是要进行主从一致性检查 修复
安装percona-toolkit


/usr/local/percona-toolkit-2.2.16/bin/pt-table-checksum --user='root' --password='xxxxxx' --host=192.168.168.xxx --port=3306  --replicate=UserCenter.checksums   --nocheck-replication-
filters
 
/usr/local/percona-toolkit-2.2.16/bin/pt-table-sync  --print --replicat=UserCenter.checksums --sync-to-master h=192.168.168.xxx,P=3306,u=root,p=xxxxxx --charset=utf8
 
/usr/local/percona-toolkit-2.2.16/bin/pt-table-sync  --execute --replicat=UserCenter.checksums --sync-to-master h=192.168.168.xxx,P=3306,u=root,p=xxxxxx --charset=utf8    (从本地到192.168.168.xxx)
 别看我这只有三句命令,但是原来一直报错也设置了半天才设置好
中间报过字符集错误

Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
11-27T14:40:02 DBI connect(';host=192.168.168.xxx;port=3306;mysql_read_default_group=client','root',...) failed: Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/) at /usr/local/percona-toolkit-2.2.16/bin/pt-table-checksum line 1581
在mysql的配置文件中client部分把原来的utf8mb4给注释掉就可以了。
但还是有个别数据没有同步,

转载于:https://www.cnblogs.com/cuizhipeng/p/5043018.html

<think>嗯,用户想配置MySQL的主从复制,我得先理清楚步骤。首先,主从复制的基本原理是主库记录二进制日志,从库读取这些日志并应用。需要确保主库和从库的server-id不同,这是关键。然后,用户可能已经安装了MySQL,但可能需要检查版本是否兼容。主从复制的配置通常涉及修改配置文件,比如主库的my.cnf里要启用log-bin和设置server-id,从库则要设置server-id、中继日志等。记得提醒用户重启服务使配置生效。 接下来,主库上需要创建一个复制专用的用户,并授予REPLICATION SLAVE权限。这部分可能容易出错,用户得确保用户名和密码正确,权限也正确。然后查看主库的状态,记录File和Position,这些信息在配置从库时会用到。 在从库配置部分,用户需要指定主库的信息,包括主机地址、端口、用户名、密码,还有刚才记录的File和Position。启动从库的复制线程后,要检查Slave_IO_Running和Slave_SQL_Running是否为Yes,否则需要排查错误。 用户可能遇到的问题包括网络连接问题、权限不足、server-id重复,或者二进制日志文件不一致。需要提醒用户检查防火墙设置,确保主从库之间的端口开放。另外,如果主库已经有数据,可能需要先同步现有数据,比如使用mysqldump导出,再导入到从库,保证数据一致性。可能还需要提到一些可选配置,比如从库设置为只读,避免数据冲突。还有半同步复制或GTID的配置,但用户如果是初次配置,可能不需要太复杂的内容,先保证基本的主从复制成功。最后,生成相关问题时,要考虑用户可能的后续需求,比如性能优化、主从切换、故障处理等。这样可以帮助用户进一步学习相关的内容,解决实际应用中的问题。</think>### MySQL主从复制配置步骤 #### 一、主库(Master)配置 1. **修改MySQL配置文件** 在`/etc/my.cnf`或`/etc/mysql/mysql.conf.d/mysqld.cnf`中添加: ```ini [mysqld] server-id = 1 # 唯一ID,主从不能重复 log-bin = mysql-bin # 启用二进制日志 binlog-do-db = mydb2,mydb3 # 指定需要复制的数据库(可选) ``` 重启MySQL服务: ```bash systemctl restart mysqld ``` 2. **创建复制用户** 登录主库执行: ```sql CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` 3. **查看主库状态** 记录`File`和`Position`值(从库配置需要): ```sql SHOW MASTER STATUS; ``` 输出示例: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 154 | mydb2,mydb3 | | +------------------+----------+--------------+------------------+ ``` #### 二、从库(Slave)配置 1. **修改MySQL配置文件** 添加以下配置: ```ini [mysqld] server-id = 2 # 唯一ID,与主库不同 relay-log = mysql-relay-bin # 启用中继日志 read_only = ON # 从库只读(可选) ``` 2. **设置主库连接信息** 登录从库执行: ```sql CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; ``` 3. **启动复制线程** ```sql START SLAVE; ``` 4. **检查复制状态** ```sql SHOW SLAVE STATUS\G ``` 确认`Slave_IO_Running`和`Slave_SQL_Running`均为`Yes`。 #### 三、同步现有数据(可选) 若主库已有数据,需先手动同步: ```bash mysqldump -u root -p --databases mydb2 mydb3 > dump.sql mysql -u root -p < dump.sql ``` #### 四、验证主从同步 1. 在主库执行数据操作(如`INSERT`)。 2. 在从库查询对应表,观察数据是否一致。 --- ### 常见问题排查 1. **主从连接失败** - 检查防火墙是否开放`3306`端口。 - 验证`repl_user`权限是否配置正确[^2]。 2. **数据不一致** - 确认`server-id`唯一。 - 检查`binlog-do-db`是否包含目标数据库[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值