CentOS7开启MySQL8主从备份、每日定时全量备份(推荐)

1. 前言

MySQL是一种常用的关系型数据库管理系统,用于管理企业或网站中的数据。MySQL的主从复制(也称为主从备份)是提高系统容错和可用性的一种有效方法。在本文中,我们将介绍如何在CentOS 7上配置MySQL 8的主从复制,以及如何设置每日定时全量备份,以保证数据的完整性和安全性。

2. 准备工作

在进行下一步之前,需要先满足以下条件:

2.1 在CentOS 7上安装MySQL 8

首先需要在CentOS 7上安装MySQL 8,可以通过以下命令完成:

sudo yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

sudo yum -y install mysql-community-server

安装过程中,系统会提示你输入root密码,输入后请务必牢记。

2.2 修改MySQL配置文件

修改MySQL的配置文件/etc/my.cnf,添加如下内容:

[mysqld]

server-id=1

log-bin=mysql-bin

binlog-format=ROW

这里设置了MySQL实例的唯一ID为1,开启二进制日志,格式为行级复制(ROW)。

3. 配置MySQL主从复制

3.1 创建主从备份账户

为了实现主从复制,需要创建主和从的备份账户。在MySQL中,备份账户必须拥有具体的权限,以便于备份主机上的数据。

首先,登录MySQL:

mysql -u root -p

输入root密码后,创建主从备份账户:

CREATE USER 'replication'@'%' IDENTIFIED BY 'replication_password';

GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

这里创建的账户名为“replication”,密码为“replication_password”,并对这个账户赋予了REPLICATION SLAVE权限。

3.2 配置主服务器

接下来,在主服务器上配置主从复制。将以下配置文件添加到/etc/my.cnf的[mysqld]段中:

server-id=1

log-bin=mysql-bin

binlog-format=ROW

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

binlog-do-db=test_db

这里设置了MySQL实例的唯一ID为1,开启二进制日志,格式为行级复制(ROW)。binlog-ignore-db可以忽略一些不需要备份的数据库,binlog-do-db表示需要备份的数据库名称,这里指定为test_db。

保存修改后,重启MySQL服务:

systemctl restart mysqld

3.3 配置从服务器

在从服务器上也需要进行一些配置。在/etc/my.cnf文件中添加以下内容:

server-id=2

replicate-do-db=test_db

这里设置了MySQL实例的唯一ID为2,指定需要复制的数据库为test_db。

3.4 启动MySQL主从复制

在从服务器上登录MySQL后,执行如下命令,配置从服务器和主服务器的连接:

CHANGE MASTER TO

MASTER_HOST='192.168.0.100',

MASTER_USER='replication',

MASTER_PASSWORD='replication_password',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=107;

这里MASTER_HOST是主服务器的IP地址,MASTER_USER和MASTER_PASSWORD是之前创建的主从备份账户的用户名和密码。MASTER_LOG_FILE是主服务器上的二进制日志名称,MASTER_LOG_POS是主服务器上最后一个读取的二进制日志的位置。

配置完毕后,启动MySQL主从复制,执行如下命令:

START SLAVE;

这里启动MySQL从服务器的复制服务。

4. 配置每日定时全量备份

除了开启主从复制,在生产环境中定期全量备份也是非常重要的,以保证数据的完整性和安全性。在这里,我们将使用crontab命令定期备份MySQL数据。

4.1 创建MySQL备份脚本

创建一个备份脚本如下:

#!/bin/bash

# MySQL备份导出路径

backup_dir=/data/mysql_backup

date_dir=`date +%Y%m%d`

dest_dir=$backup_dir/$date_dir

log_file=$backup_dir/backup.log

# 创建备份目录

if [ ! -d $dest_dir ]

then

mkdir -p $dest_dir

fi

# 备份所有数据库

mysqldump -u root -p --all-databases --single-transaction | gzip > $dest_dir/all_databases.sql.gz

# 写入备份完成时间、备份类型、备份路径等信息

echo "backup time: $(date +%Y-%m-%d_%H:%M:%S)" >> $log_file

echo "backup type: full backup" >> $log_file

echo "backup path: $dest_dir" >> $log_file

echo "" >> $log_file

脚本会备份MySQL中的所有数据库,并将备份文件压缩到指定的备份目录中。

4.2 设置crontab定时任务

在终端中执行以下命令打开crontab编辑器:

crontab -e

在编辑窗口中添加以下内容,实现每天晚上9点执行备份脚本:

0 21 * * * /data/mysql_backup/backup.sh

这里,“0 21 * * *”表示每天的21:00执行备份脚本。

5. 总结

MySQL的主从复制和定时备份是保证数据安全性的重要手段。在本文中,我们详细介绍了如何在CentOS 7系统上配置MySQL 8的主从复制和定时全量备份。希望这篇文章对您有所帮助。

操作系统标签