目录
1.1、 设置server-id值并开启binlog参数(mysql自动开启binlog)
2.1、 设置server-id值并开启binlog参数(mysql自动开启binlog)
3.1、在主库中创建db1数据库,创建student表,在student表中插入数据。
环境准备
两台机器一主一从。
主库(MySql Master):ip为:192.168.80.129
从库(MySql Slave) :ip为:192.168.80.130
一、基于binlog的主从同步
1、主库配置
1.1、 设置server-id值并开启binlog参数(mysql自动开启binlog)
[root@node1 ~]# vim /etc/my.cnf.d/mysql-server.cnf
server_id=129 #唯一
看看binlog是否开启
systemctl restart mysqld #重启数据库
1.2、建立同步账号
mysql> create user rep@'192.168.80.%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to rep@'192.168.80.%';设置权限
Query OK, 0 rows affected (0.00 sec)
1.3、同步主库数据到从库
[root@node1 ~]# mysqldump -B db1 > db1.sql #备份数据库
[root@node1 ~]# scp db1.sql 192.168.80.130:~ #将数据传输到从库中
2、从库配置
2.1、 设置server-id值并开启binlog参数(mysql自动开启binlog)
[root@node2 etc]# vim /etc/my.cnf.d/mysql-server.cnf
server_id=130 #唯一
read_only=on #只读
[root@node2 ~]# mysql < db1.sql #将主库数据传到从库中
systemctl restart mysqld #重启数据库
[root@node2 ~]# mysql -e "show databases"; #查看所以数据库
2.2、设定从主库同步
mysql> show master status; #查看主数据库的二进制日志文件和位置(在主库mysql中查看)
配置从数据库连接到主数据库进行复制的参数
mysql> change master to
-> master_host='192.168.80.129', 主数据库的IP地址
-> master_user='rep', 设置了从数据库连接到用户名
-> master_password='123456', 设置了从数据库连接到密码
-> master_log_file='binlog.000002', 主数据库复制数据时使用的二进制日志文件名
-> master_log_pos=1367; 主数据库复制数据时使用的二进制日志位置=
mysql> start slave; #启动从数据库的复制进程
mysql> show slave status \G #显示从数据库的复制状态信息,包括当前从数据库连接的主数据库信息、复制进程的状态、已经复制的日志文件和位置等。
3、测试
3.1、在主库中创建db1数据库,创建student表,在student表中插入数据。
3.2在从数据库查看
二、基于gtid的主从同步配置
1、主库配置
1.1、开启gtid,并开启强一直性
[root@node1 ~]# vim /etc/my.cnf.d/mysql-server.cnf
gtid_mode=on #开启gtid
enforce-gtid-consistency=on #开启强一致性
[root@node1 ~]# systemctl restart mysqld #重启数据库
2、从库配置
2.1、开启gtid,并开启强一直性
[root@node2 ~]# vim /etc/my.cnf.d/mysql-server.cnf
gtid_mode=on #开启gtid
enforce-gtid-consistency=on #开启强一致性
[root@node1 ~]# systemctl restart mysqld #重启数据库
2.2设置主从复制的配置
mysql> change master to
-> master_host='192.168.80.129',
-> master_user='rep',
-> master_password='123456',
-> master_auto_position=1; #使用自动定位
mysql> start slave; #启动从数据库的复制进程
mysql> show slave status \G #显示从数据库的复制状态信息