834天前2020-12-09 18:38:31 |    抢沙发  5042 
今天公司新的服务器上需要做mysql的主从复制同步,之前配置过,但是今天我居然一点儿印象都没了,于是找了找,看了看以前的服务器配置,总结了一下记录下方便以后使用。

mysql

老样子,还是先讲一下大体流程,方便后面配置的时候心里有数。

主从复制需要分别在主服务器和从服务器配置两个地方即可;

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导出和导入到从数据库。

好了就先到这里把。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享