使用备份初始化复制从库。本指南介绍如何使用 mariadb-backup,从主服务器为新副本准备数据。
本页介绍如何从备份设置副本。
如果使用 MariaDB Galera Cluster,你可能需要参考以下页面:
- 在 MariaDB Galera Cluster 与 MariaDB Server 之间配置 MariaDB 复制
- 在两个 MariaDB Galera Cluster 之间配置 MariaDB 复制
备份数据库并准备备份
第一步是在复制拓扑中的某台数据库服务器上创建一份新的完整备份,并准备该备份。如果源数据库服务器就是预期的复制主库,那么创建完整备份时无须添加任何额外选项。例如:
$ mariadb-backup --backup \
--target-dir=/var/mariadb/backup/ \
--user=mariadb-backup --password=mypassword
如果源数据库服务器是预期主库的一个副本,则应添加 --slave-info 选项,并且可能还需要 --safe-slave-backup 选项。例如:
$ mariadb-backup --backup \
--slave-info --safe-slave-backup \
--target-dir=/var/mariadb/backup/ \
--user=mariadb-backup --password=mypassword
然后按通常的方式准备备份。例如:
$ mariadb-backup --prepare \
--target-dir=/var/mariadb/backup/
将备份复制到新副本
备份完成并准备好后,就可以将它复制到新副本。例如:
$ rsync -avP /var/mariadb/backup dbserver2:/var/mariadb/backup
在新副本上恢复备份
此时可以按通常的方式,将备份恢复到 datadir。例如:
$ mariadb-backup --copy-back \
--target-dir=/var/mariadb/backup/
如有必要,还应调整文件权限:
$ chown -R mysql:mysql /var/lib/mysql/
在主库上创建复制用户
新副本开始从主库复制前,需要在主库上创建一个用户账号,供副本连接使用;同时需要向该账号授予 REPLICATION SLAVE 权限。例如:
CREATE USER 'repl'@'dbserver2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'dbserver2';
配置新副本
启动新副本上的服务器前,需要先配置它。至少应确保它具有唯一的 server_id 值。还需要确保其他复制设置符合预期,例如具体环境中适用的各种 GTID 系统变量。
配置完成后,可以在新副本上启动 MariaDB Server 进程。
在新副本上启动复制
此时需要从原始备份目录中取得主库的复制坐标。
如果是在主库上创建备份,坐标保存在 xtrabackup_binlog_info 文件中。如果是在另一个副本上创建备份,并且指定了 --slave-info 选项,则坐标保存在 xtrabackup_slave_info 文件中。
mariadb-backup 会以两种形式导出复制坐标:GTID 坐标,以及二进制日志文件和位置坐标,后者类似通常在 SHOW MASTER STATUS 输出中看到的内容。可以选择使用哪组坐标来设置复制。
例如:
mariadb-bin.000096 568 0-1-2
无论使用哪种坐标,都需要通过 CHANGE MASTER TO 设置主库连接,然后通过 START SLAVE 启动复制线程。
GTID
如果希望使用 GTID,首先需要将 gtid_slave_pos 设为从备份目录中 xtrabackup_binlog_info 或 xtrabackup_slave_info 文件取得的 GTID 坐标。例如:
$ cat xtrabackup_binlog_info
mariadb-bin.000096 568 0-1-2
然后在 CHANGE MASTER TO 语句中设置 MASTER_USE_GTID=slave_pos。例如:
SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO
MASTER_HOST="dbserver1",
MASTER_PORT=3306,
MASTER_USER="repl",
MASTER_PASSWORD="password",
MASTER_USE_GTID=slave_pos;
START SLAVE;
文件与位置
如果希望使用二进制日志文件和位置坐标,需要在 CHANGE MASTER TO 语句中设置 MASTER_LOG_FILE 和 MASTER_LOG_POS,值为取得的文件及位置坐标。具体从 xtrabackup_binlog_info 还是 xtrabackup_slave_info 中取得,取决于备份是在主库上创建,还是在主库的副本上创建。例如:
CHANGE MASTER TO
MASTER_HOST="dbserver1",
MASTER_PORT=3306,
MASTER_USER="repl",
MASTER_PASSWORD="password",
MASTER_LOG_FILE='mariadb-bin.000096',
MASTER_LOG_POS=568;
START SLAVE;
检查新副本的状态
现在副本设置应该已经完成,应使用 SHOW SLAVE STATUS 检查其状态。例如:
SHOW SLAVE STATUS\G











暂无评论内容