您现在的位置是:网站首页> 编程资料编程资料

MYSQL 完全备份、主从复制、级联复制、半同步小结_Mysql_

2023-05-27 521人已围观

简介 MYSQL 完全备份、主从复制、级联复制、半同步小结_Mysql_

mysql 完全备份

1,启用二进制日志,并于数据库分离,单独存放

 vim /etc/my.cnf

添加

 log_bin=/data/bin/mysql-bin

创建/data/bin文件夹并授权

 chown mysql.mysql /data/bin

2,完成备份数据库

 mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 

3,对数据库进行增删改

 INSERT hellodb.students(stuid,name,gender,age) VALUE(27,'Lujunyi','M',30); 

4,停止MySQL

 systemctl stop mariadb.service 

5,解压备份文件

 unxz /data/all.sql.xz 

6,查找完全备份时二进制日志的位置

 vim /data/all.sql HANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=468

7,导出完成备份后的二进制日志

 mysqlbinlog --start-position=468 /data/bin/mysql-bin.000001 > /data/inc.sql 

8,还原数据

 mysql -e 'source /data/all.sql' mysql -e 'source /data/inc.sql' 

9,验证完成。

误删除的恢复

1,启用二进制日志并与数据库分开存放

 vim /etc/my.cnf

添加

 log_bin=/data/bin/mysql-bin 

创建/data/bin文件夹并授权    

 chown mysql.mysql /data/bin

2,对数据库进行完全备份

 mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 

3,对数据库进行增删改

 mysql -e "drop table hellodb.students" mysql -e "insert hellodb.teachers value (5,'wangqi',50,'M')" 

4,停止服务

 systemctl stop mariadb.service 

5,删除数据库

 rm -rf /var/lib/mysql/* 

6,解压备份文件

 unxz /data/all.sql.xz

7,查看备份文件,查找二进制节点   

 vim /data/all.sql -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=521902; 

8,导出二进制日志节点数据

 mysqlbinlog --start-position=521902 /data/bin/mysql-bin.000004 >/data/inc.sql 

9,删除二进制日志节点数据中误操作的命令
   

 vim /data/inc.sql DROP TABLE `hellodb`.`students` /* generated by server */ 

10,启动服务 

 systemctl start mariadb.service

11.关闭二进制日志记录

 mysql -e "SET sql_log_bin=off" 

12,导入备份数据

 mysql 

13,验证完成。

主从复制

# 主服务器

1,主服务器启用二进制日志,并更改二进制目录

 vim /etc/my.cnf log_bin=/data/bin/mysql-bin binlog-format=row server-id=1(主从服务器必需保证不同) 

更改目录见上面

2,重启服务

 service mysql restart

3,创建一个账户用来复制数据的账户

 mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIED BY "centos"

4,查看主服务器正在使用的二进制日志

 show master logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 14383 | +------------------+-----------+ 1 row in set (0.00 sec)

# 从服务器

5,更配置

 vim /etc/my.cnf server-id=2 read-only #log-bin=/data/bin/mysql-bin 

6,启动服务

 service mysql restart 

7,关联主服务

 MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.22.7.70', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14383; 

8,查看从服务器状态

 show slave status\G; 

9,启动线程

 start slave; 

#测试

10,增删改主服务器数据,查看从服务器数据是否同步。

主从复制出错的解决-sql_slave_skip_counter

#master服务 ip=172.22.7.70

1,主服务器启用二进制日志,并更改二进制目录

 vim /etc/my.cnf log_bin=/data/bin/mysql-bin binlog-format=row server-id=1(主从服务器必需保证不同) 

更改目录见上面

2,重启服务

 service mysql restart

3,创建一个账户用来复制数据的账户

 mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIED BY "centos" 

4,查看主服务器正在使用的二进制日志

 mysql -e 'show master logs;' +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 264 | | mysql-bin.000002 | 245 | +------------------+-----------+ 

#slave服务 ip=172.22.7.71

5,修改配置文件,启动服务

 vim /etc/my.cnf [mysqld] server-id = 2 read-only systemctl start mariadb 

#配置错误master服务信息

6,配置,change master to

 CHANGE MASTER TO MASTER_HOST='172.22.7.77', MASTER_USER='wang', MASTER_PASSWORD='lodman', MASTER_PORT=3306, MASTER_LOG_FILE=log-bin.001', MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10; 

7,查看slave 状态

 mysql -e 'show slave status\G' Slave_IO_State: Master_Host: 172.22.7.77 Master_User: wang Master_Port: 3306 Connect_Retry: 10 Master_Log_File: log-bin.001 Read_Master_Log_Pos: 4 Relay_Log_File: ct7m1-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: log-bin.001 Slave_IO_Running: No Slave_SQL_Running: No ·········略

8,启动复制线程

 mysql -e 'start slave' 

9,再次查看slave状态

 mysql -e 'show slave status\G' Slave_IO_State: Master_Host: 172.22.7.77 Master_User: wang Master_Port: 3306 Connect_Retry: 10 Master_Log_File: log-bin.001 Read_Master_Log_Pos: 4 Relay_Log_File: ct7m1-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: log-bin.001 Slave_IO_Running: Connecting Slave_SQL_Running: Yes ·········略

10,master服务增删改数据

11,查看slave服务是否同步,失败!

#解决错误

12,停止并重置slave复制线程服务

 mysql -e 'stop slave' mysql -e 'reset slave' 

 13,配置正确的change master to 信息

 CHANGE MASTER TO MASTER_HOST='172.22.7.70', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=245; 

14,查看slave状态    

 show slave status\G; Slave_IO_State: Waiting for master to send event Master_Host: 172.22.7.70 Master_User: repluser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 7382 Relay_Log_File: ct7m1-relay-bin.000002 Relay_Log_Pos: 540 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: No 

15,发现slave状态中Slave_SQL_Running: No ,执行下面命令更为为YES

 MariaDB [(none)]> stop slave; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> start slave; Query OK, 0 rows affected (0.03 sec) MariaDB [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.22.7.70 Master_User: repluser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 7382 Relay_Log_File: ct7m1-relay-bin.000003 Relay_Log_Pos: 540 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes ·········略 

16,查看slave服务数据是否同步

17,同步完成。

Mysql 级联复制

在生产换进中有一种主从复制的方法主节点先将数据同步到一个中间的从节点,然后由从节点给后续的其他从节点来复制数据,这种复制方式称为级联复制。

级联复制的好处是可以极大的减轻主节点的压力

级联复制在配置时需要在中间节点上启用log_slave_updates的选项。

 #环境 服务器 master slave slave 系统 centos7 centos7 centos7 ip 172.22.7.70 172.22.7.70 172.22.7.71

#mater

1,主服务器启用二进制日志,并更改二进制目录

 vim /etc/my.cnf log_bin=/data/bin/mysql-bin binlog-format=row server-id=1(主从服务器必需保证不同)

更改目录见上面

2,重启服务

 service mysql restart

3,创建一个账户用来复制数据的账户 

 mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIED BY "centos"

4,查看主服务器正在使用的二进制日志

 mysql -e 'show master logs;' +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 264 | | mysql-bin.00
                
                

-六神源码网