![设置 MySQL 数据库复制](https://linux22.com/image/796295/%E8%AE%BE%E7%BD%AE%20MySQL%20%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%8D%E5%88%B6.png)
我正在尝试设置 MySQL db 复制,这看起来非常简单。
我正在使用这个教程:http://www.howtoforge.com/mysql_database_replication
现在,我为一个非常大的网站运行一个相当大的 MySQL 数据库,在本教程中,它要求我重新启动 MySQL 以应用 /etc/my.cnf 文件中的新设置。
我试图不惜一切代价避免这一步骤,因为我知道重新启动 MySQL 在我的计算机上需要几分钟(由于日志/数据库很大),而且我不希望有任何停机时间。
有没有办法无需完全重新启动 Mysql 即可应用必要的设置?
答案1
很多设置my.cnf
都可以在 MySQL 中使用SET GLOBAL
。 例如:
mysql> SET GLOBAL log_slow_queries = On;
但有些在 MySQL 内部是只读的;log-bin
就是其中之一。
mysql> set global log_bin = foo;
ERROR 1238 (HY000): Variable 'log_bin' is a read only variable
答案2
您需要将新数据库添加到现有数据库或合并两个现有数据库服务器吗?如果需要添加新数据库,请使用命令“show master status”检查您的服务器是否在生产服务器上收集 binlog。您需要在新服务器上设置服务器 ID(它不能是 1,因为 1 是默认服务器 ID,并且它用于您的“旧”服务器)。还要检查您的“旧”服务器是否在实际接口上监听。如果“旧”服务器仅使用 127.0.0.1,则需要重新启动它,因为您无法在不重新启动的情况下更改正在运行的服务器上的监听和 ID 参数。所有其他复制参数都可以通过“set global”命令更改,但我强烈建议在 my.cnf 中设置它们,以避免旧服务器重新启动时出现问题。