| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> 用通配符批量同步MySQL部分数据表 -> 正文阅读 |
|
|
[大数据]用通配符批量同步MySQL部分数据表 |
|
作者:田逸(formyz) 接到一个任务,需要对一个数据量比较大的MySQL数据库的部分数据表做主从复制,其中有51个表的表明前缀相同(如下图所示),还有几个没有规律的表也需要一起同步。
要实现MySQL主从同步,需要先导出一份源数据库的备份。可用的方法有两种:mysqldump 与 xtrabackup。 在确定源数据库的版本后(5.6.50),目标系统安装好与之匹配的MySQL版本(不高于MySQL 8),设置好选项文件/etc/my.cnf(如下表所列),初始化数据库以后,确保从数据库MySQL服务可正常启动。
请注意,MySQL选项文件my.cnf支持通配符。这样节省了大量的手工输入,也降低了出错几率!!! 试图尝试主库(源数据库)使用工具mysqldump导出这些需要同步的数据表,但其本身不支持直接使用通配符,需要用间接的办法实现,又加上其它几个没有命名规律的数据表,用这个工具导出有一定的难度,只能放弃,而选用xtrabackup。 xtrabackup直接支持通配符,其选项形式为“--include=”。再结合选项“--tables-file”,把其余没有规律的数据表写到一个文本文件,xtrabackup带这两个选项就可以省事不少。手动创建文本文件tables.txt,其完整内容如下:
其中“bianjicms”为数据库名。 在保证主数据库所在系统有足够的存储空间以后,执行如下指令将指定的数据库表导出到目录“/mnt/backup”。
? 如果一切顺利,执行完毕后会有“221006 13:57:20 completed OK!”类似这样的输出。继续在主库所在的系统执行下列指令为恢复数据准备。
一切准备妥当以后,将数据库备份目录以NFS的方式共享给数据库从库(目标库)所在的系统,省掉数据复制这个步骤,从而节省时间。 备库系统也安装好与主库相一致的xtrabackup软件,并将已经初始化生成数据文件的目录清理干净,本案的数据目录为 /data1/mysql_db,如果不清空,xtrabckup恢复数据库时将不能正常执行。清理完从库数据库目录的文件后,执行如下指令进行备份文件的恢复。
数据恢复完毕后,启动从数据库。启动可能失败,提示没有系统表等错误。造成这个错误的原因是由于没有把主库的mysql等系统库级数据表同步过来所致。解决办法就是再执行一次MySQL数据库初始化操作,这个操作不会对已经用xtrabackup恢复的数据产生任何影响,可大胆操作。 再进行从数据库MySQL服务启动,就应该正常了。登录从数据库MySQL客户端,执行如下指令进行数据库主从同步。
因为主库与从库都启用了GTID,因此无需再输入主库二进制日志文件名(master_log_file)以及日志偏移量(master_log_pos)。
? ? 继续在mysql客户端执行指令 show slave status\G 验证同步的正确性及状态。
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/22 14:16:33- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |