整体思路
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)