一:主库的操作
执行全量备份命令:
mysqldump -uUSER -pPASSWORD pt_brain --single-transaction --routines --triggers --events --master-data=2 --flush-logs > pt_brain.sql
-----single-transaction:简单理解不锁表保持事务一致性
-----routines :备份存储过程和函数
-----triggers :备份触发器
-----events :备份事件
-----master-data=2:在备份文件中记录当前二进制日志的位置,并且为注释的,设置文1是不注释掉在主从复制中才有意义
-----flush-logs:滚动一次日志
查看备份的文件开头几行MASTER_LOG_FILE文件和 MASTER_LOG_POS位置(用于主从复制的时候设置复制点):
more pt_brin.sql
压缩备份文件:
tar zcvf pt_brain.sql.tgz pt_brain.sql
传文件到从库服务器(到此主库的操作结束):
scp root@IP:/data/backup/pt_brain.sql.tgz /data/backup/import/
参数说明:此命令是在接受文件的服务器上运行的,此处的ip指的是发送方的ip
- IP:发送方的ip,如果同一内网写内网地址
- /data/backup/pt_brain.sql.tgz 发送方服务器的文件位置
- /data/backup/import/ 接收方文件存放的位置
二:从库的操作
配置mysql配置文件添加属性提高导入速度:
innodb_flush_log_at_trx_commit = 0
sync_binlog=1000
重启MySQL服务:
service mysqld restart;
解压备份文件:
tar zxvf pt_brain.sql.tgz pt_brain.sql
编写脚本方便查看导入开始到结束时间:
vim import.sh
复制下面脚本到import.sh
#!/bin/bash
#use mysql to import mysql data
BakDir=/data/backup/import #备份sql文件所在绝对位置,提前创建好文件夹
LogFile=/data/backup/import/import.log #记录导入开始和结束时间的文件
Date=`date +%Y%m%d`
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
mysql -uUSER -pPASSWORD pt_brain < pt_brain.sql #导入命令
Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 导入开始时间:$Begin 导入结束时间:$Last >> $LogFile
赋予脚本权限:
chmod a+x import.sh
执行脚本保护进程(nohup命令)并后台运行(&)导入数据库:
nohup ./importFull.sh &