Mysql8.0.20主从备份和同步
主从备份需要注意的点
- 主从数据库的版本一致
- 主从数据库中需要同步的数据库数据要一致
- 主从节点都开启二进制日志
- 主从节点的server_id必须不一样,要保证其唯一性
1、首先准备两台服务器,每个服务器上有一个数据库
2、主节点的配置
首先关掉MySQL服务,然后修改my.ini配置文件
[mysqld]
# log-bin、binlog-do-db、binlog-ignore-db、server-id
log-bin = mysql-bin
# 需要同步的数据库名,多个配置多行
binlog-do-db = database1
binlog-do-db = database2
# 不同步的数据库,多个配置多行
binlog-ignore-db = mysql
#主节点id
server-id = 1
在主节点上配置REPLICATION SLAVE权限
mysql> CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> show grants for repl;
+----------------------------------------------+
| Grants for repl@% |
+----------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `repl`@`%` |
+----------------------------------------------+
1 row in set (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
重启MySQL服务
3、从节点配置
首先关掉MySQL服务,然后修改my.ini配置文件(和主节点配置差不多,server-id不同就行)
[mysqld]
# log-bin、binlog-do-db、binlog-ignore-db、server-id
log-bin = mysql-bin
# 需要同步的数据库名,多个配置多行
binlog-do-db = database1
binlog-do-db = database2
# 不同步的数据库,多个配置多行
binlog-ignore-db = mysql
#从节点id
server-id = 2
重启MySQL服务
4、查看主节点状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 156 | sss | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)
5、从节点上配置主节点的参数
MASTER_LOG_FILE=‘mysql-bin.000001’ 是上一步的File字段的值
MASTER_LOG_POS=156; 是上一步Position字段的值
其他三个分别为主节点IP、MySQL用户名和密码
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.167',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=156;
Query OK, 0 rows affected (1.62 sec)
mysql>
start slave;
Query OK, 0 rows affected (0.10 sec)
mysql>
6、查看状态
show slave status ;
如果下面的字段跟你配置的一样而且Slave_IO_Running和Slave_SQL_Running为yes就成了
到这里已经实现了主从备份
实验结果为在主库中加数据,从库也会跟着增加,但从库增加数据主库不会增加
Mysql实现互为主从
为了服务的高可用,来实现互为主从,也就是解决从库增加数据主库不会增加的问题
为了方便理解以下所讲的主节点是上面文章中介绍的主节点(其实这里的主节点应该叫做从节点),从节点是上面文章中介绍的从节点(以下应该叫主节点)
1、首先上面的步骤必须完成
2、查看从节点状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 1894 | sss | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.02 sec)
3、主节点上配置从节点的信息
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.200',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1894;
Query OK, 0 rows affected (0.05 sec)
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
4、查看状态(这里是在主节点上看)
show slave status ;
结果是你配置的信息就没问题,跟上面第6步一样
现在在从节点的数据库中增加、修改、删除等操作,主节点也会同步