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
注意:本文归作者所有,未经作者允许,不得转载