您现在的位置是:技术博客 > 数据库数据库 跨数据库实时同步表数据 Lucas2020-11-12 16:45【代码】1467人已围观 简介跨数据库实时同步表数据 需求如下:由于业务需要,要求将A库中的member表,每分钟同步到B库。以实现B库中的数据更新速度略慢于访问A库。 假设这2个数据库配置如下: 数据库名称|主机/IP|用户名|密码|端口 :--:|:--:|--|:--:|: A|100.00.0.001|root|mima01|3306 B|xx.sql.tencentcdb.com|lucas|mima02|64388 #### 一、mysqldump + sh脚本完成 ``` # 1、创建 member.sql 文件,并赋上可写权限 touch member.sql chmod 775 member.sql # 2、创建 syn.sh 文件 touch syn.sh # 3、将A库中的test_a表备份出来,导出到member.sql文件中 mysqldump -uroot --host=100.00.0.001 --port=3306 A member --password=mima01 --set-gtid-purged=off -f > /member.sql # 4、将导出的member.sql文件导入到B库中 mysql -ulucas --host=xx.sql.tencentcdb.com --port=64388 B --password=mima02 -f < /member.sql # 5、执行sh脚本 sh syn.sh # 6、写一个每分钟执行一次的定时任务 ``` 提示:mysqldump 简单用法如下,详细用法<a herf="https://www.cnblogs.com/qq78292959/p/3637135.html" target='_blank'>点此</a>查看 ``` # 导出全部数据库。 --all-databases , -A mysqldump -uroot -p --all-databases # 显示帮助信息并退出。 --help mysqldump --help # 在导出过程中忽略出现的SQL错误。 --force mysqldump -uroot -p --all-databases --force # 需要导出的主机信息。 --host, -h mysqldump -uroot -p --host=localhost --all-databases # 连接数据库密码。 --password, -p mysqldump -uroot -p --host=localhost --all-databases --password=demopassword # 指定连接的用户名。 --user, -u mysqldump --user=demouser ``` #### 二、可能的错误及解决方案 1、报错:command not found ``` syn.sh: line 2: $'\r': command not found ``` 解决方法:修改syn.sh的文件格式 `set ff=unix`配置。 2、报错如下:only be set when @@GLOBAL.GTID_MODE = ON. ``` ERROR 1839 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON. ``` 解决方法:在使用mysqldump备份sql的时候,加上 `--set-gtid-purged=off`配置,在导入表的时候加上 `-f`强制执行。 3、报错如下:using password: YES ``` ERROR 1045 (28000): Access denied for user 'lucas'@'115.159.36.155' (using password: YES) ``` 解决方法:账号密码错误。 4、报错如下:you need (at least one of) the SUPER privilege ``` ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation ``` 解决方法:切换成root账户。 #### 三、关于mysql写操作不断生成bin日志造成磁盘爆满的解决方案 1、配置my.conf禁止生成bin日志 ``` # 编辑/etc/my.conf文件 vim /etc/my.conf # 将log-bin=mysql-bin注释掉 #log-bin=mysql-bin # 重启mysql service mysqld restart ```  提示:磁盘爆满可以通过以下命令删除mysql-bin日志 ``` # 进入到目录 cd /www/server/data # 查看 ls ```  ``` # 找到相关日志,并删除 find . -maxdepth 1 -regex ".*mysql-bin.000.*" | xargs rm -rf ``` 转载:感谢您对Lucas个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源Lucas个人博客”。 很赞哦! ( 0 ) 上一篇:mysql连表查询 下一篇:mysql批量修改表前缀 相关文章 常用的SQL函数 页面可视化数据表结构 存储过程函数 mysql连表查询 点击排行 生活不止眼前的苟且,还有诗和远方 十年一觉电影梦 奥地利基茨比厄尔 禅修治愈身心 自律成就自我 零边际成本社会 Modern PHP 鸟哥的Linux私房菜 本栏推荐 要技术,更要有创意 定时任务 Curl无法发送https请求 Lnmp环境搭建 常用的SQL函数 Windows的cmd指令 ueditor工具栏浮动bug 有趣的js插件 标签云 git laravel swoole javascript vue ajax html css sql linux docker flask django nginx apache thinkphp markdown sublime wechat layui photoshop nodejs mysql windows composer java maven springboot mybatis IDE 猜你喜欢 Swoole 基础篇一(初识) PHP进程管理器 正则的快速上手 Sublime代码格式化 Lnmp环境搭建 高并发库存防控超量 Linux之top命令 常用的SQL函数 站点信息 建站时间:2018-05-01 在线人数:1人 文章统计:263篇 总浏览量:222614次 统计数据:百度统计 个人信息:扫描二维码查看