当前位置:   article > 正文

mysql双机热备份

mysql双机热备


前言

双机热备份是一种重要的数据保护和系统可靠性技术,它通过在两台服务器之间实现互为备份的方式,确保在系统出现故障时,服务能够继续运行而不会中断。这种技术主要应用于对系统连续工作性和实时性要求较高的场景,如数据中心、网络服务等,以保障系统的高可靠性和数据的安全性


一、安装MySQL数据库

首先我们需要在服务器A跟服务器B上面分别安装两个MySQL数据库

下面是安装MySQL数据库的步骤

检查liunx中是否有自带数据库Mariadb,rpm -qa | grep -i mariadb

如有yum --setopt=tsflags=noscripts remove MariaDB-client.x86_64卸载

1).使用lsblk -l命令查看Linux服务器中磁盘挂载情况,将数据库安装在磁盘空间较大的文件夹。

2).下载数据库安装包,使用文件传输工具将安装包传入要安装文件夹中。

3).使用命令tar axvf mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar解压安装包。(注:红色字体为安装包名称)

4).使用命令cd data切换到安装包目录下,使用rpm命令安装解压后的软件包。(注:红色字体为文件夹名称/下载包名称,

rpm -ivh mysql-community-common-8.0.15-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.15-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.15-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.15-1.el7.x86_64.rpm

按照此顺序进行安装,否则报错,报错为缺少依赖文件)如果不行,通过 --force --nodeps 命令不检查依赖强制安装,--nodeps就是安装时不检查依赖关系,--force就是强制安装。

如rpm -ivh mysql-community-devel-8.0.15-1.el7.x86_64.rpm --force --nodeps)

5).使用systemctl start mysqld命令启动MySQL数据库  mysqld.service

6).使用systemctl enable mysqld命令设置MySQL开机自启

7).使用systemctl stop firewalld命令关闭防火墙

打开 etc/my.cnf文件 添加lower_case_table_names=1  数据库大小写敏感

8).使用cat /var/log/mysqld.log | grep password命令查看数据库密码。

(grep 'temporary password' /var/log/mysqld.log) 两种方式都可以查看到临时密码。

查看mysql服务状态:service mysqld status 

9).以root用户登陆数据库,命令为mysql -u root -p xxxx。(注:p为密码)

10).使用命令alter user root@localhost identified by  'root@你的密码';

命令来修改密码。

set password for root@localhost=password('你的密码'); 红色字符全要输入

两种方式都可以修改密码。

11).创建数据库服务账号,数据库服务账号用作后面其他服务连接数据库时使用:

 create user '你的账户'@'%' identified with mysql_native_password by '你的密码';

12).给服务账号授权:

grant all privileges on *.* to '你的账户'@'%' with grant option;  

flush privileges;  刷新权限

二、双机热备份

1.概念

       双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式)。 主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。 而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。

2.热备份原理

        双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务。 这个复制的过程实质上是从服务器复制主服务器上MySQL的二进制日志(bin-log),并在从服务器上还原主服务器上的sql语句操作,这样只要两个数据库的初态是一样的,就能一直同步。

       双机热备的实现需要MySQL的版本高于 3.2 。另外由于这种备份是基于MySQL二进制日志实现,所以主从服务器上的MySQL版本最好能够一样,至少从服务器的MySQL版本不可以低于主服务器的数据库版本。 因为MySQL不同的版本之间二进制日志可能不一样。 当然这种复制和重复都是MySQL自动实现的,我们只需要配置即可。


3.配置步骤

1.保证A服务器和B服务器能够ping通(使用ping命令在A服务器上ping B服务器的地址,保证能够ping通)

2.分别为A和B安装相同版本的mysql(输入mysql -V或mysql --version,即可显示当前安装的MySQL版本信息)

3.MySQL的版本要高于3.2(输入mysql -V或mysql --version,即可显示当前安装的MySQL版本信息)

配置之前请在两台服务器上安装好MySQL,MySQL安装参照《MySQL安装步骤》

  1. #主服务器A配置
  2. 1).进入mysql数据库,在A上面创建专门用于备份的用户。其中rhy是用户名,192.168.1.4是B(从服务器)的ip地址,密码为’rhy@123 ’;这个等会在B(从服务器)上要用;
  3. mysql> grant replication slave on *.* to 'rhy'@'192.168.1.4' identified by 'rhy@123'; (高版本MySQL不支持该语法,需要将该命令拆分成两个命令执行,首先创建用户然后再给该用户赋权)
  4. 2).创建数据库 'backup' 注意:A、B都要手动创建相同名称的数据库
  5. mysql> create database backup;
  6. 3).开启 A 的 binarylog
  7. vim /etc/my.cnf
  8. 进入my.cnf配置文件
  9. 进行配置文件修改
  10. bind-address=192.168.1.3 //设定为A(主服务器)的IP
  11. server-id =1 //表示A的id
  12. log_bin = mysql-bin.log //binlog日志文件, 也可以指定自定义路径 例: /data/mysql/mysql-bin.log
  13. binlog-do-db =backup //用来表示只把指定的数据库的改动,记录到binary日志中,如果有多个数据库可以用‘,’分割 例如: binlog-do-db =backup,db1,db2,...dbn
  14. auto-increment-increment = 10 //假设将来可能需要10台服务器做备份就设置为10,如果100台就设置为100
  15. auto-increment-offset = 1 //表示这台服务器的序号,从1开始,不超过auto-increment-increment设定的值
  16. 4).保存配置后,重启MySQL服务(必须要重启mysql!!!!!)
  17. [root@hadoop01 mysql_softs]# service mysqld restart
  18. 5).获取主服务器状态和同步状态
  19. mysql> use backup; //进入到指定需要热备的数据库meiya
  20. mysql> FLUSH TABLES WITH READ LOCK; //锁定meiya数据库
  21. 6).退出mysql,导出backup数据库(可在navicat中操作)
  22. [root@hadoop01 mysql_softs]# mysqldump -uroot -proot backup > backup.sql
  23. 7).重新登录mysql,查看A服务器的binary日志位置
  24. mysql> show master status\G
  25. *************************** 1. row ***************************
  26. File: mysql-bin.000001
  27. Position: 343
  28. #在主从复制中,主库记录了每个事务的binlg文件名和位置(Position),从库通过读取主库的binlog文件来实现数据同步,主库的Position总变表示当前主库binlog文件的位置,
  29. #可以用来确定主库和从库之间的数据同步状态。
  30. #binlog文件名和文件中的偏移量,例如,一个Positionn可能表示为 mysql-bin.00001:1234,其中 mysqlbin.000001 是binlog文件名1234 是文件中的偏移量。
  31. #主库执行个事务时时会将该事务的binlog写入当前的binlog文件中,并更新Position为当前的文件名和偏移量
  32. #当主库切换到一个新的binlog文件时,会将Position更新为新的文件名和偏移量
  33. Binlog_Do_DB: backup
  34. Binlog_Ignore_DB:
  35. Executed_Gtid_Set:
  36. 1 row in set (0.00 sec)
  37. -----------------------------------------------------------------------
  38. !!!记住File和Position对应的值,接下来在设置B(从服务器)的时候需要用到。
  39. 8). 解除锁定
  40. mysql> use backup ;
  41. mysql> unlock tables ;
  42. #从服务器B配置
  43. 9).设置从服务器的文件配置
  44. vim /etc/my.cnf
  45. server-id = 2 //表示B的id,必须保证每个服务器不一样,防止进入死循环.
  46. binlog_format = mixed //binlog的复制模式有三种,statement(基于sql语句的复制)/row(基于行的复制)/mixed(混合模式复制)
  47. log_bin = mysql-bin.log //binlog日志文件, 也可以指定自定义路径 例: /data/mysql/mysql-bin.log
  48. replicate-do-db = backup //指定需要复制的数据库,如果有多个数据库可以用‘,’分割 例如: binlog-do-db =backup,db1,db2,...dbn
  49. relay_log = mysql-relay-bin //中继日志的名字
  50. log-slave-updates = ON //中继日志执行之后,这些变化是否需要计入自己的binarylog,双主互相备份,因此要打开.
  51. expire_logs_days = 10 //binlog过期清理时间
  52. max_binlog_size = 100M //binlog每个日志文件大小
  53. -----
  54. 保存配置后,重启MySQL服务(必须要重启mysql!!!!!)
  55. [root@hadoop02 mysql_softs]# service mysqld restart
  56. 10). 导入数据库,开始同步(将刚才A导出的数据库文件 backup.sql 传到B服务上)
  57. [root@hadoop02 ~]# mysql -uroot -proot backup < backup.sql // ‘ backup '待导入的数据库名称,A导出的数据库文件 ‘backup.sql’
  58. 11).登录mysql
  59. mysql> CHANGE MASTER TO
  60. -> MASTER_HOST='192.168.1.3', // 此处是A主服务器的IP
  61. -> MASTER_USER='rhy', // 刚上面A主服务器mysql创建的用户名
  62. -> MASTER_PASSWORD='rhy@123', // 刚上面A主服务器mysql创建的rhy用户对应的密码
  63. -> MASTER_LOG_FILE='mysql-bin.000001', //a服务器的值
  64. -> MASTER_LOG_POS=343; //a服务器的值
  65. Query OK, 0 rows affected (0.00 sec)
  66. 12).重启MySQL服务(必须要重启mysql!!!!!)
  67. [root@hadoop02 mysql_softs]# service mysqld restart
  68. 13).重新登录mysql,查看slave线程是否开启
  69. mysql> show slave status\G
  70. ......
  71. Slave_IO_Running: Yes // yes状态代表成功启动
  72. Slave_SQL_Running: Yes // yes状态代表成功启动
  73. ......
  74. [如果其中一个是No,那就说明不成功,需要查看mysql的错误日志...有时候密码填错了,有时候防火墙的3306没有打开,ip地址不对等等..都会导致失败。
  75. 重启两个进程
  76. # 到这里就全部配置完成了!

总结

本文介绍了MySQL双机热备份的方法,可以作为参考

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/804242
推荐阅读
相关标签
  

闽ICP备14008679号