分类 MySql 下的文章

mysqldump导出数据
Windows环境下

创建 online_db.cnf 配置文件

[client]
host=127.0.0.1
port=3306
user=root
password=12345
skip-lock-tables=TRUE #该配置为了备份时不锁库
ignore-table=common.courses1
ignore-table=common.bonuses_old
ignore-table=common.lives
ignore-table=common.live_powers

创建 mysql_back.bat bat文件

set t=%date:~,4%年%date:~5,2%月%date:~8,2%日星期%date:~12,2%%time:~0,2%:%time:~3,2%:%time:~6,2%
D:\server\MySQL\bin\mysqldump.exe  --defaults-extra-file="online_db.cnf" course> "bak\online_course%t%.sql"

如果需要隐藏执行的bat窗口
创建 hide12345.vbs 文件

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "mysql_back.bat",0

现在执行 hide12345.vbs 即可隐藏执行备份了
执行 mysql_back.bat 即可看见备份窗口, 备份完成后自动关闭

注意mysqldump.exe填写本机的正确路径

为什么有这样奇葩的需求呢, 场景是这样的, 公司当前的系统架构为微服务架构, 然后需要写统计时就非常恶心, 特别是各自分类下的各种支付方式的金额, 然后支付表在另一个服务器上门的数据库, 虽然通过php也可以两边拿数据, 但是写统计时在微服务架构下要多恶心有多恶心, 无法通过一条sql得到结果太过于麻烦, 终于还是在网络上找到了办法, 手动写一遍记录一下

Mysql的跨服务器 关联查询--Federated引擎
1.确认开启Federated引擎

查询FEDERATED功能是否开启:
show ENGINES;

2、如果状态为NO则需修改my.ini文件,增加一行federated配置:

在[mysqld]下面添加 federated,然后重启mysql 

3.建立映射表

注意:
- 表名可以不同,但表结构要完全相同
- ENGINE=InnoDB 要改成 ENGINE=FEDERATED
- 添加最下面一行:CONNECTION='mysql://用户名(数据库用户名):密码(数据库密码)@ip:端口/数据库名/表名'

4.结果(此时数据已经映射过来了)

注意, 虽然可以这样干, 但是会有问题, 每次哪怕查询很少的数据时, 都会把目标的所有数据拉过来, 如果表很小还行, 表很大不适合