mysqldump 和 xtrabackup 命令
mysqldump
mysqldump -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASS db1 > db1.sql
mysqldump -h <ip> -u <user> -p<password> \
--skip-opt --create-option --single-transaction -q \
--no-autocommit -R --triggers --default-character-set=utf8 -E -B \
-e --max_allowed_packet=67108864 --net_buffer_length=8192 --databases > databases.sql
说明:
- 参数
--single-transaction
可以在备份库的时候不锁表
mysql --socket=/var/lib/mysql/mysql.sock \
-e "show databases"|grep \
-Ewv "Database|information_schema|performance_schema|mysql|test|bksuite_common"|xargs mysqldump \
--socket=/data/bkee/logs/mysql/mysql.sock \
--skip-opt --create-options --single-transaction -q \
--no-autocommit -R --triggers --default-character-set=utf8 \
-e --max_allowed_packet=67108864 --net_buffer_length=8192 \
--events --databases | gzip > /data/dbbak/mysql_$(date +%F_%T).gz
说明
mysqldump
导出的SQL
语句在导入到其他数据库的时候会相当慢,甚至几十秒才处理一条SQL
;现有两个参数会影响导入的速度:
--max_allowed_packet=67108864 客户端/服务器之间通信的缓存区的最大大小
--net_buffer_length=8192 TCP/IP和套接字通信缓冲区大小
在导出的时候,使用-e
选项设定上面两个值,需要注意的是max_allowed_packet
和net_buffer_length
的导出值不能比目标数据库的值大,参看数据库的参数值,使用如下命令;
mysql> show variables like 'max_allowed_packet';
mysql> show variables like 'net_buffer_length';
xtrabackup
xtrabackup --user=xxx --password=xxx --backup --use-memory=10G \
--slave-info --compress --compress-threads=10 --target-dir=mysql_$(date +%Y%m%d%H%M) 1> backup.log 2> backup.err &