老样子,还是先讲一下大体流程,方便后面配置的时候心里有数。
主从复制需要分别在主服务器和从服务器配置两个地方即可;
1,修改mysql的配置文件;
2,登陆mysql添加同步账户和同步设置;
好了,下面是实操:
假设我们的主服务器是192.168.1.1,从服务器是192.168.1.2
我首先登陆1.1
然后修改配置文件
vim /etc/my.cnf.d/mysql-server.cnf然后再[mysqld]段下面添加:
server-id=1 #服务器 id ,主从机器在同一局域网内必须全局唯一,不能相同 log-bin=mysql-bin #二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里 sync_binlog=1 binlog-do-db=sync_db #待同步的数据库,如果有多个以空格隔开db1 db2 db3 .... binlog-ignore-db=mysql #不同步的数据 如果有多个以空格隔开db1 db2 db3 ....同样登陆从服务器修改配置文件内容为:
symbolic-links=0 relay_log=/var/log/mysql/relay.log server-id=2 replicate-do-db=sync_db replicate-ignore-db=mysql read_only = 1然后各自重启mysql服务
然后登陆进行账户和同步配置
主服务器配置账户
#创建用户 CREATE USER 'mainroot'@'192.168.1.2' IDENTIFIED WITH mysql_native_password BY '登陆密码不要超过32位'; #授权 grant replication slave on *.* to 'mainroot'@'192.168.1.2'; #刷新 FLUSH PRIVILEGES;然后登录从数据库重复上面的操作,主要要修改一下ip为主服务器的ip
#创建用户 CREATE USER 'laveroot'@'192.168.1.1' IDENTIFIED WITH mysql_native_password BY '登陆密码不要超过32位'; #授权 grant replication slave on *.* to 'laveroot'@'192.168.1.1'; #刷新 FLUSH PRIVILEGES;然后切换回主数据库运行:
show master status;然后记录下File 和Position字段下的内容,因为后面要用,假设File = binlog.000001,Position = 10
同样在从服务器上执行同样操作,记录下来
假设从的是File = binlog.000002,Position = 100
然后在从服务器上执行:
change master to master_host='192.168.1.1',master_user='mianroot',master_password='主数据库用户密码',master_log_file='binlog.000001',master_log_pos=10; start slave;然后可以执行:
show slave status\G;查看状态,记住一定要是
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个都为yes才行,否则都不会同步。
同样在主要服务器上也执行同样的操作:
change master to master_host='192.168.1.2',master_user='slaveroot',master_password='从数据库用户密码',master_log_file='binlog.000002',master_log_pos=100; start slave;然后可以执行:
show slave status\G;查看状态,记住一定要是
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个都为yes才行,否则都不会同步。
到此就全部配置完毕了,如果你的Slave_SQL_Running: No 是这个, 那么你可以尝试一下方法:
stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave; show slave status\G到此就解决了。
这里要再说一下如果你的主数据库里面有数据,那么你需要自己使用mysqldump导出和导入到从数据库。
好了就先到这里把。
除特别注明外,本站所有文章均为博文家原创,转载请注明出处来自https://www.32e.top/databases/mysql/article-158.html
暂无评论