ProxySQL的数据备份

2024-01-10 14:12:49 浏览数 (1)

场景:

ProxySQL需要从2台扩展到N台,但是当前ProxySQL没有使用cluster模式部署,而是使用SLB 多个独立的ProxySQL节点的方式承载流量。

推荐的方法:

导出运行中ProxySQL的配置文件,然后到新的ProxySQL实例里面加载。

具体步骤如下:

1、使用sqlite3命令导出为sql文件

代码语言:javascript复制
sqlite3 /var/lib/proxysql/proxysql.db .dump > /root/proxysql-dump.sql

可使用less命令查看下导出的sql内容,可以看到和mysql的大体类似
less /root/proxysql-dump.sql 

2、编辑 /root/proxysql-dump.sql

代码语言:javascript复制
做这一步的是为了修复数据,不然导入进去有些报错,会导致数据丢失
1、把里面的INSERT INTO 批量替换为 INSERT OR REPLACE INTO  (不然导入的时候会因为键冲突导致一些global_variables表里面的值没有写进去)
sed -i 's#INSERT INTO#INSERT OR REPLACE INTO#g' /root/proxysql-dump.sql

2、把里面的CREATE TABLE批量替换为 -- CREATE TABLE  (不然导入的时候会因为表已存在冲突,这种报错问题倒是没有,但是不太好看,建议也注释掉create table语句)
sed -i 's#CREATE TABLE#-- CREATE TABLE#g' /root/proxysql-dump.sql

3、到新的PorxySQL实例去导入

代码语言:javascript复制
systemctl restart proxysql  使其生成一份初始化的proxysql.db文件

systemctl stop proxysql  停掉proxysql进程,便于后面的导入操作


执行导入命令
sqlite3 /var/lib/proxysql/proxysql.db < /root/proxysql-dump.sql

4、启动proxySQL

代码语言:javascript复制
systemctl start proxysql
systemctl enable proxysql

5、测试

###############################################################################

update 2024-01-10

percona blog上提到的备份方法

https://www.percona.com/blog/the-various-methods-to-backup-and-restore-proxysql/

方法1 【推荐用这种】

代码语言:shell复制
    登录proxsql admin控制台
    select config into outfile /var/lib/proxysql/proxybkp.cnf;
    
    用 proxybkp.cnf 这个生成的配置文件即可放到其它实例上去启动

方法2

代码语言:shell复制
    $ mysqldump -u admin -p -h 127.0.0.1 -P6032 --no-tablespaces --no-create-info --no-create-db --skip-triggers --skip-column-statistics main mysql_servers > proxy_mysql_servers_bkp.sql

    注意如果mysqldump 版本是 8.0,则导出的时候还需要加参数 –skip-column-statistics , It only works from ProxySQL version 2.0.8 and above

0 人点赞