数据库主从复制实操

 整体思路

1.锁定主数据库,只允许读取不允许写入

2.配置主数据库文件

3.导出主数据库文件,复制到从服务器,让从服务器导入

4.登录主数据库创建同步账号并授权

5.配置从数据库文件

6.在从数据库中配置同步信息

7.开启同步并查看状态

8.解锁主数据库

先修改主数据库的my.cnf

vim /etc/my.cnf

在[mysqld]下添加

server-id = 128
log-bin=mysql-bin

重启mysql

service mysqld restart

验证是否有开启二进制日志,配置正确自然就开启了

show variables like 'log_bin';

锁定主数据库

锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致。

mysql -uroot -p;

mysql> flush tables with read lock;

查看当前数据库的二进制日志写到什么位置(只有打开二进制日志,这句命令才有结果)

然后备份主数据库
mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql

一.先在另外一台机器上安装一模一样的mysql数据库
1.关闭防火墙
[root@oracle-1 jk]# systemctl stop firewalld
[root@oracle-1 jk]# systemctl disable firewalld
2.永久关闭SELinux
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效
3.从服务器ip为:
主服务器ip为:
mysql版本为:
查看mysql版本:mysql -V 或者mysql --version
查看mysql安装目录:whereis mysql
4.
mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db1.sql
scp master_db1.sql root@192.168.110.129:/root
mysql -uroot -p < master_db1.sql

 同样,在接下来的从数据库中进行配置

vim /etc/my.cnf

在[mysqld]下添加

server-id = 129
log-bin=mysql-bin

必须保证主服务器和从服务器上的server-id的值不能相同

重启mysql
service mysqld restart

验证是否有开启二进制日志,配置正确自然就开启了

show variables like 'log_bin';

主服务器

   show master status;

 这两个要用到


最重要的
进入从服务器的mysql执行
change master to master_host='192.168.110.128', master_user='slave', master_password='Slave123@',master_log_file='mysql-bin.000001', master_log_pos=582;

同款

change master to master_host='192.168.139.161', master_user='slave', master_password='JieYislave@123',master_log_file='mysql-bin.000001', master_log_pos=294;

BrsA)-GPh5Pq
set password for 'root'@'localhost' =password('Rootroot123456@');

grant all privileges on *.* to root@'localhost' identified by 'Rootroot123456@';

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'Slave123@';
FLUSH PRIVILEGES;


mysql> show master status;
show master status;
| mysql-bin.000001 | 582 |

[root@localhost ~]# cd /
[root@localhost /]# find -name auto.cnf
./var/lib/mysql/auto.cnf

start slave;

查询同步状态

show slave status G

最后解锁主数据库
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

原文地址:https://www.cnblogs.com/spdb/p/14434845.html