我们有一个MySQL database (InnoDB)
在我们live Ubuntu 12.04 server
已经成长相当大(25GB +)。
每个月左右,我们都需要将此数据库复制到我们的开发机器上,以便在本地工作。
以前我们使用 导出数据库MySQL Workbench
,将.sql
文件下载到我们的开发机器,然后再次使用MySQL Workbench
. 问题是现在数据库太大了,我们无法快速恢复以使其在周末完成!所以周一早上我们有一个半导入的数据库可以使用。
在这种情况下,其他人会怎么做?
到目前为止,我能想到的唯一解决方案是对未使用的机器进行恢复,然后copying
将数据恢复到我们所有的开发机器(其中 5 台)。这行得通吗?
我们有两台MySQL 5.5
服务器在运行Ubuntu 12.04
。
我们成功地将 3 个数据库从server01复制到server02,但需要添加第 4 个(新)数据库。
我们my.cnf
对主人有:
binlog_do_db = database1
binlog_do_db = database2
binlog_do_db = database3
Run Code Online (Sandbox Code Playgroud)
如何将第四个数据库添加到复制?我读过的所有内容都表明我们需要重新启动 MySQL,有什么办法可以解决这个问题吗?还是我们只需要安排它?
这是我们迄今为止的计划,但我希望有一种不需要重新启动的方法。我是否过于复杂了?
GRANT REPLICATION SLAVE ON *.* TO 'slaveusr'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
QUIT;
Run Code Online (Sandbox Code Playgroud)
编辑 my.cnf 以包含新数据库:
binlog_do_db = database4
Run Code Online (Sandbox Code Playgroud)
重启 MySQL
service mysql restart
Run Code Online (Sandbox Code Playgroud)
将初始副本的数据库备份到从服务器
USE database4;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Run Code Online (Sandbox Code Playgroud)
在新的外壳中
mysqldump -u root -ppassword --opt database4 > database4.sql
scp database4.sql root@server02:/home
Run Code Online (Sandbox Code Playgroud)
在旧壳中
UNLOCK …
Run Code Online (Sandbox Code Playgroud) 在我们的实时MySQL 5.5数据库服务器上,我们使用MySQL Workbench运行手动查询、检查正在运行的查询以查看发生了什么等。
我今天注意到在“服务器状态”选项卡上有非常多的“每秒查询数”和“每秒 InnoDB 写入数”,但在显示“客户端连接”列表的选项卡上,它显示了所有正在运行的查询,它几乎没有显示任何查询......也许每隔几秒钟就会出现 2 或 3 次。
我在这里误解了什么?这两个标签根本不相加。
编辑 -这是输出SHOW ENGINE INNODB STATUS;
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
2 read views open inside InnoDB
Main thread process no. 24494, id 139631733794560, state: sleeping
Number of rows inserted 36474186, updated 163927609, deleted 11892445, read 1747097889216
1.06 inserts/s, 13.91 updates/s, 0.00 deletes/s, 33615.95 reads/s
----------------------------
END OF INNODB …
Run Code Online (Sandbox Code Playgroud)