山楂树之恋v1

导航

MySQL的mysqldump的完全+增量备份与恢复

@ 查看数据库:
mysql -uroot -p -e "show databases;"

@ 在master上进行全库备份:
innobackupex --user=root --password=123456 --host=127.0.0.1 /backups/
#--user=root 指定备份用户
#--password=123456 指定备份用户密码
#--host  指定主机
#/backups  指定备份目录


备份
mysqldump -uroot -p --databases qqq >qqq.backup.sql;

恢复
source /root/qqq.backup.sql

单表的备份与恢复:
备份:mysqldump -uroot -p asd a > bf/asd_a_$(date +%F_%T).sql
mysqldemp -u用户 -p 数据库名 库中表名 > 某个目录下/备份名

恢复: mysql -uroot -p asd < bf/asd_a_2020-02-14_11\:43\:43.sql
mysql -u用户 -p 数据库名 < 某个目录下/备份名
注意: $$数据库名不能删除$$






mysqldump -uroot -p --all-databases --master-data=1 --flush-logs > /backup/all_$(date +%F_%T).sql
查more /backup/all_2020-02-16_23\:54\:58.sql

mysql -uroot -p < all_2020-02-17_12\:24\:17.sql
//第一次完全备份恢复完成


完全备份前必须--添加二进制:
打开:vim /etc/my.cnf
添加:log-bin=mysql-bin
server_id=10
重新启动服务器: systemctl restart mysqld

查 :ll /var/lib/mysql



-----------mysqldump的完全+增量备份与恢复-----------

完全备份:
mysqldump --user=root -p --flush-logs --lock-all-tables --all-databases > all_$(date +%F_%T).sql

第一次完全备份恢复完成:
mysql -uroot -p < all_2020-02-17_12\:24\:17.sql

第一次增量备份完成:
mysqlbinlog -uroot -p /var/lib/mysql/mysql-bin.000004 > increment_.sql

第二次增量备份完成:
mysqlbinlog -uroot -p --start-position=421 /var/lib/mysql/mysql-bin.000004 > increment_2.sql
--start-position=421 //是第一次增量备份的位置


第一次增量恢复完成:
source /root/increment_.sql //数据库操作

第二次增量恢复完成:
mysql -uroot -p < increment_2.sql //Linux操作

|--------------------------------------------------------------|
| systemctl stop mysqld MySQL停一下 |
| rm -rf /var/lib/mysql/* 不加*的话会把MySQL会这个目录删除的 |
| systemctl start mysqld MySQL启动 |
|--------------------------------------------------------------|

查看数据库密码:grep password /var/log/mysqld.log

@ 查看用户密码权限
show variables like '%validate%';
@ 密码安全类型
set global validate_password_policy=0;
@ 密码最少长度:
set global validate_password_length = 1;
@ 修改密码:
alter user user() identified by '666666';

刷新:flush privileges;


service mysqld restart mysql如果全部删除的话




-----------------总结----------------

xtrabackup的完备+增备的一般步骤就三步:
1. innobackupxe -uroot -proot <完全备份目录>
2. innobackupxe -uroot -proot --incremental 增备目录 --incremental-basedir=完全备份目录
3. innobackupxe -uroot -proot --incremental 增备目录 --incremental-basedir=上一次增备份目录

xtrabackup的完备+增备的恢复步骤步:
1. 准备:
<1>innobackupxe -uroot -proot --apply-logs --redo-only 完全背备份目录
<2>innobackupxe -uroot -proot --apply-logs --redo-only 完全背备份目录 --incremental-dir 第一次增量备份目录
<3>innobackupxe -uroot -proot --apply-logs --redo-only 完全背备份目录 --incremental-dir 第二次增量备份目录
2.恢复:innobackupxe -uroot -proot --copy-back 完全背备份目录 执行完报错
3. 停止mysql服务:systemctl stop mysqld 然后执行命令:rm -rf /var/lib/mysql/*
4.恢复数据:innobackupxe -uroot -proot --copy-back 完全背备份目录
5. ll /var/lib/mysql 显示该目录的所有用户及其所属组均为root
6. chown -R mysql.mysql /var/lib/mysql 修改该目录的下的所有文件的所有用户所有组均为mysql 7.重启mysql服务:systemctl start mysqld

-----------------------------------------------------------------

mysqldump全量备份+增量备份的步骤:
1.mysqldump --user --password --all-databases --master-data=2 --lock-all-tables --flush-logs > 备份路径+完全备份的文件名称
2.mysqlbinlog /var/lig/mysql/mysql-bin.00000X > 备份路径+增量备份的文件名称(在该操作之前,一定要对数据库做改变:比如插入操作)
3.mysqlbinlog --start-position=value (--start-datetime=year-month-day hour:min:sec) /var/lig/mysql/mysql-bin.00000X > 备份路径+第二次增量备份的文件名称(在该操作之前,一定要对数据库做改变:比如插入操作)
4.systemctl stop mysqld
5.rm -rf /var/lib/mysql/*:删除该目录下的所有myql的文件
6.systemctl start mysqld

完全备份+增量备份的恢复
7.mysql -uroot -proot < 备份路径+完全备份的文件名称(此时的状态是安装过数据后的状态)
8.再次执行步骤7(会把db1恢复)
9.mysql -uroot -proot < 备份路径+第一次增量备份的文件名称
10.mysql -uroot -proot < 备份路径+第二次增量备份的文件名称

posted on 2020-02-19 14:58  山楂树之恋v1  阅读(479)  评论(0编辑  收藏  举报