mysql5.7从库异常重配

轩辕暗神 3天前 ⋅ 16 阅读

1,找到数据库文件位置, 我这里是

/var/lib/mysqlNew

停止mysql

systemctl stop mysqld

1,清空mysql目录

rm -rf /var/lib/mysqlNew/*

重置目录权限

mkdir -p /var/lib/mysqlNew
chown -R mysql:mysql /var/lib/mysqlNew
chmod 750 /var/lib/mysqlNew

restorecon -Rv /var/lib/mysqlNew  # 如果你启用了 SELinux 我这里没执行

2, 初始化mysql目录

mysqld --initialize --user=mysql --datadir=/var/lib/mysqlNew

3,从主库中导出数据

mysqldump -u root -p \
  --socket=/var/lib/mysqlNew/mysql.sock \
  --single-transaction \
  --master-data=2 \
  --add-drop-database \
  --add-drop-table \
  --set-gtid-purged=OFF \
  --databases test ziyuanDatabase speed_policing 119Database chaoyangbeifang001 chaoyangbeifang002 \
  face jsh_erp link0 link1 link2 linksys wxf wxfDev > all.sql

参数解释:

参数作用
--socket=...指定你当前使用的 MySQL 实例
--single-transaction保证导出时数据一致性(用于 InnoDB)
--master-data=2会在导出 SQL 中添加 CHANGE MASTER TO 注释,非常关键
--add-drop-database每个库前添加 DROP DATABASE IF EXISTS
--add-drop-table每个表前添加 DROP TABLE IF EXISTS
--set-gtid-purged=OFF禁止导出 GTID 信息,适用于非 GTID 复制
--databases ...指定你要导出的库列表

导出后查看数据: 执行完导出后,执行:

grep "CHANGE MASTER TO" all.sql

你会看到类似:

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000798', MASTER_LOG_POS=238608736;

然后发送给从库

# scp 传到从库
scp all.sql root@192.168.1.14:/home/

启动从库数据库

systemctl start mysqld 

查看从库临时密码

grep 'temporary password' /var/log/mysqld.log

重新设置从库用户

#  mysql -u root -p --socket=/var/lib/mysqlNew/mysql.sock

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lly@123';
CREATE USER 'lly'@'%' IDENTIFIED BY 'Lly@123';
grant all privileges on *.* to 'lly'@'%';
flush privileges; 

从库开始导入数据

mysql -u root -p --socket=/var/lib/mysqlNew/mysql.sock < /home/all.sql
等待导入完成
[root@localhost mysqlNew]# mysql -u root -p --socket=/var/lib/mysqlNew/mysql.sock < /home/all.sql
Enter password: 
[root@localhost mysqlNew]# 

重启从库数据库

systemctl restart mysqld 

登录从库数据库

mysql -u root -p --socket=/var/lib/mysqlNew/mysql.sock

创建从库同步用户(在主库上创建,主从都要)

CREATE USER 'replica_user'@'192.168.1.13' IDENTIFIED BY '123456@Abc'; 
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'192.168.1.13'; 
FLUSH PRIVILEGES;

查看同步节点

[root@localhost mysqlNew]# grep "CHANGE MASTER TO" /home/all.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000798', MASTER_LOG_POS=284355153;

创建同步

CHANGE MASTER TO  
MASTER_HOST='192.168.1.13',  
MASTER_USER='replica_user',
MASTER_PASSWORD='123456@Abc',
MASTER_LOG_FILE='mysql-bin.000798', # 替换为从库上的二进制日志文件
MASTER_LOG_POS=284355153;	# 替换为从库上的二进制日志位置

mysql> CHANGE MASTER TO  
    -> MASTER_HOST='192.168.1.13',  
    -> MASTER_USER='replica_user',
    -> MASTER_PASSWORD='123456@Abc',
    -> MASTER_LOG_FILE='mysql-bin.000798', # 替换为从库上的二进制日志文件
    -> MASTER_LOG_POS=284355153;# 替换为从库上的二进制日志位置
Query OK, 0 rows affected, 2 warnings (0.15 sec)

开启同步

START SLAVE;

查看状态

SHOW SLAVE STATUS\G

全部评论: 0

    我有话说: