主服务器必要配置
• 必要运行参数
– 启用 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;