MySQL数据库Innobackupex主从同步

主服务器必要配置

• 必要运行参数

启用 binlog 及允许同步

master]# vim /etc/my.cnf

[mysqld]

bind-address    = 0.0.0.0        //监听的ip地址

log_bin=master-bin        // 启用 binlog 日志

server_id = 10        // 指定服务器 ID 号

binlog_format=mixed        // 指定日志格式

授权备份用户

master]# mysql -u root -p'密码'

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.1.%' IDENTIFIED BY 'pass';

mysql> SHOW MASTER STATUS\G;

MySQL 备份工具

物理备份缺点

– 跨平台性差

– 备份时间长、冗余备份、浪费存储空间

mysqldump 备份缺点

– 效率较低,备份和还原速度慢

– 备份过程中,数据插入和更新操作会被挂起

XtraBackup 工具

• 一款强大的在线热备份工具

– 备份过程中不锁库表,适合生产环境

– 由专业组织 Percona 提供(改进 MySQL 分支)

• 主要含两个组件

– xtrabackup : C 程序,支持 InnoDB/XtraDB

– innobackupex :以 Perl 脚本封装 xtrabackup ,还支持 MyISAM安装 XtraBackup

主从数据库上都安装 xtrabackup

• 下载适配的 RPM 包并安装

– percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

#yum -y install perl-Digest-MD5.x86_64 rsync perl-DBD-MySQL

#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

#rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

# rpm -ql percona-xtrabackup-24

......

命令innobackupex 基本选项

常用选项 含 义

--host 主机名

--user 用户名

--port 端口号

--password 密 码

--databases 数据库名

--no-timestamp 不用日期命名备份文件存储的子目录名

--databases=" 库名 "     // 单个库

--databases=" 库 1 库 2"     // 多个库

--databases=" 库.表 "     // 单个表

--redo-only     //日志合并

--apply-log     //准备还原 ( 回滚日志 )

--copy-back     //恢复数据

--incremental 目录名     //增量备份

--incremental--basedir=目录名    //增量备份时,指定上一次备份数据存储的目录名

--incremental-dir= 目录名     //准备恢复数据时,指定增量备份数据存储的目录名

--export     //导出表信息

--import     //导入表空间

--slave-info  //导出的信息包含master-log、position偏移量

配置从服务器

• 调整运行参数

– 启用 binlog 及允许同步,启用只读模式

slave]# vim /etc/my.cnf

[mysqld]

server_id = 20        // 指定服务器 ID 号

log_bin=slave-bin        // 启用 binlog 日志

sync-binlog=1        // 允许日志同步

read_only=1        // 只读模式,同步及 SUPER 权限用户例外

使用 innobackupex

– 将主数据库所有库完全备份到 /backup

master]# innobackupex --user root --password 123456 --slave-info /backup --no-timestamp     // 完全备份

– 将主数据库备份文件夹/backup拷贝到从库/backup

master]# scp -r /backup 从库ip:/root

– 通过应用BACKUP-DIR下的事务日志文件xtrabackup_logfile,在BACKUP-DIR目录建立新的事务日志文件ib_logfile。

slave]# innobackupex --user root --password 123456 --apply-log /backup    

slave]# rm -rf /var/lib/mysql/*   // 恢复时要求空的库目录

slave]# innobackupex --user root --password 123456 --copy-back /backup     // 复制所有的备份到他们原来的位置

slave]# chown -R mysql:mysql /var/lib/mysql      //更改属组、属主

slave]# systemctl stop mysqld

slave]# systemctl start mysqld

slave]# mysql -uroot -p123456

mysql> show databases;

从库发起同步操作

– 指定 Master 相关参数,日志名、偏移量(查看/buckup/xtrabackup_info

mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.10',

-> MASTER_USER='repluser',

-> MASTER_PASSWORD='pass',

-> MASTER_LOG_FILE='master-bin.000001',        // 日志文件

-> MASTER_LOG_POS=520;        // 偏移位置

.. ..

mysql> START SLAVE;        // 启动复制

– 确认 IO 线程、 SQL 线程都已运行,查看是否同步主库数据

mysql> SHOW SLAVE STATUS\G;

猜你喜欢

转载自blog.csdn.net/qq_36586867/article/details/81478154