innobackupex只备份恢复单表或者单库

innobackupex只备份恢复单表或者单库

全程在线导入,数据库不需要重启

前提条件:
1.单库备份和恢复可以使用innobackupex全量备份的文件或者单独备份的文件
2.单库恢复需要将所有的表discard和import
3.单库恢复需要在目标端单独建立数据库和对应的表结构,否则只能全库备份和恢复

一、使用innobackupex执行备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password='xxx' --host='192.xxxx' --databases=canal_manager /data/backup/canal_manager


备份并压缩多个库
innobackupex --defaults-file=/etc/my.cnf --user=root --password='sxxx' --host='192.xx' --databases="gkdb_center_account gkdb_center_application" --compress /data/backup/db

二、应用日志

注意,这里不用执行数据的恢复 copy或者moveback

解压:
innobackupex --decompress /data/backup/db/2023-06-13_09-35-39 
应用日志
nnobackupex --apply-log /backup/canal_manager/2023-05-30_14-55-18

三、在源库导出数据库的表结构

mysqldump --no-data -uroot -p'xxxx' -h192.168.xx --databases canal_manager --triggers --routines --events > /home/mysql/canal_manager.sql

四、在目标库创建数据库和表结构

数据库的名称可以随便改变(这也是快速修改数据库名称的方法之一)

source /tmp/canal_manager.sql

五、将需要导入的库的所有表空间discard

select concat('alter table ',table_schema,'.',table_name,' discard tablespace;') from information_schema.tables where table_schema='canal_manager' into outfile '/tmp/canal_manager_discard.sql';

select concat('alter table ',table_schema,'.',table_name,' discard tablespace;') from information_schema.tables where table_type='BASE TABLE' and table_schema in ('goldkinn_center_dev_announcement',
'goldkinn_center_dev_appraise');

source /tmp/canal_manager_discard.sql

如果报错:
# 加入参数,=号后面为空是所有路径都可以
secure-file-priv=/tmp
[root@mysql ~]#/etc/init.d/mysqld restart  # 重启服务

脚本内容:

SET FOREIGN_KEY_CHECKS=0;  
alter table canal_manager.canal_adapter_config discard tablespace;
alter table canal_manager.canal_cluster discard tablespace;   
alter table canal_manager.canal_config discard tablespace;   
alter table canal_manager.canal_instance_config discard tablespace;
alter table canal_manager.canal_node_server discard tablespace;
alter table canal_manager.canal_user discard tablespace;


SET FOREIGN_KEY_CHECKS=1; 

六、备份目录下的所有表空间和数据文件全部移动到当前库的目标目录下

cp /backup/canal_manager/2023-05-30_14-55-18/canal_manager/* /data/mysql/data/canal_manager

七、将所有表空间加载,导入

select concat('alter table ',table_schema,'.',table_name,' import tablespace;') from information_schema.tables where table_schema='canal_manager' into outfile '/tmp/canal_manager_import.sql';

select concat('alter table ',table_schema,'.',table_name,' import tablespace;') from information_schema.tables where table_type='BASE TABLE' and table_schema in ('goldkinn_center_dev_announcement',
'goldkinn_center_dev_appraise',
'goldkinn_center_dev_crm',

source /tmp/canal_manager_import.sql';

脚本:
SET FOREIGN_KEY_CHECKS=0; 
alter table canal_manager.canal_adapter_config import tablespace;        
alter table canal_manager.canal_cluster import tablespace;               
alter table canal_manager.canal_config import tablespace;                
alter table canal_manager.canal_instance_config import tablespace;       
alter table canal_manager.canal_node_server import tablespace;           
alter table canal_manager.canal_user import tablespace;

SET FOREIGN_KEY_CHECKS=1; 

八、检查数据是否正确导入

posted @ 2023-06-21 14:44  数据库小白(专注)  阅读(663)  评论(0编辑  收藏  举报