如何设置 mysql 的主从数据库?
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔的博客,因为要备案的缘故,所以实际上造成了两个数据库的情况。那么,在这里,苏南大叔就实践了一下:mysql
的主从数据库设置,来解决这个问题。在本文中,有两台服务器的两个数据库,master
和slave
。服务器的mysql
数据库,其实都是mariadb
。

两边的mysql
版本号都是:
在设置这两台mysql
之前,尽量断绝这两个mysql
的写入功能。因为数据要同步的原因,写入会导致不可预期的副作用。
设置master
在master
数据库上,苏南大叔需要执行一条sql语句,增加一个新的定制用户user
,并指定这个用户的IP归属为slave
。同时给这个user
设置一个密码,密码是明文,请尽量尽量复杂。在这条授权语句中,有用户名/密码/IP。这三大要素,是需要slave
所知晓的。那么,请记住你设置的这些信息。
当然这条sql语句,是需要找个地方来执行的。苏南大叔选择的是mysql
命令行。可以通过下面的方式进入mysql
命令行。
输入密码之后,就可以执行上述sql语句了。
设置master
的my.cnf
文件
当然,找个my.cnf
文件,在window
下可能就是my.ini
了。但是,苏南大叔的测试机是centos7.5
,所以找的是my.cnf
文件。这个文件的位置是:/etc/my.cnf
。
这些设置项目,可能已经存在了,如果存在,那么大家直接修改即可,重启mysql
生效。苏南大叔很懒,所以直接reboot
了。
重启完成后,要进入mysql
命令行,检测一下,相关配置是否生效。
苏南大叔的期待值是:ROW
。
然后执行mysql
语句如下:
查看一下下面语句中的File
和Position
值。记下了这些值留用。
开放master
的3306
端口
因为slave
要靠这个端口号进行通信,所以,请在master
上开启3306
端口号。苏南大叔是在宝塔面板里面的安全选项卡里面操作的。

slave
数据库设置
把master
数据库中的sql
文件导入到slave
数据库中。然后,设置下面的信息。
首先要设置slave
的/etc/my.cnf
文件。
重要的地方就是server-id
,找个要设置为2
。而且参与同步的数据库名字replicate-do-db
要设置好。
接下来,需要在从库中执行下面的特殊sql
语句了。
上面的语句中,一共有五条配置项目,大家一定要替换成自己的实际值。
MASTER_HOST
、MASTER_USER
、MASTER_PASSWORD
这三条是Master上面的用户设置。- 最后两个
MASTER_LOG_FILE
和MASTER_LOG_POS
,来源于master
的最后一步sql语句的查询结果。
查看错误日志
在slave
上面,可以使用下面的sql语句,来查询数据库的同步状态。语句如下:
会返回下面的类似结果,具体的需要注意查看里面的Last_IO_Error
这个项目,会有写出具体的报错信息的。一般可能就是用户名/密码/ip/端口号之类的设置错误,大家可以根据提示内容,具体修改调试。
重启生效。
相关链接
- 《利用my.cnf文件固化mysql的相关设置》 https://newsn.net/say/mysql-mycnf-setting.html
总结
这种设置之后,master
库中,关于newsn.net
这个数据库名的数据,都会被同步到slave
中。本文中的数据库配置,只能叫做主从分离,并不是传统意义上的读写分离。如果要配置读写分离,还又很多更多更高深的配置方式。
如果想知道更多的mysql
读写分离的相关设置,请点击苏南大叔的后续文章,感谢您的阅读。


