Mysql一主一从配置

本文详细介绍了MySQL主从复制的配置过程,包括主服务器和从服务器的配置步骤、常见问题及解决方案。通过具体实例帮助读者理解如何搭建稳定可靠的MySQL主从复制环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、主从服务器IP

1.1 主服务器(master):195.111.2.1
1.2 从服务器(slave): 195.111.2.2
1.3 主从数据库版本一致,(该项目Mysql版本为5.7.18)

2主服务器配置【195.111.2.1】

2.1修改MySQL的配置文件my.cnf
[root@jdap01 ~]# vi /etc/mysql/my.cnf
在【mysqld】下加入以下内容:
必须添加:

#server_id是服务器的id
server_id=51
#开启二进制日志
log_bin=mysql_bin
可选择添加:
#不需要备份的数据库
binlog_ignore_db = mysql
#需要备份的数据库
binlog_do_db=test
#存储二进制日志的缓存
binlog_cache_size = 1M
#主从复制的格式(mixed,statement,row,默认为statement)
binlog_format = mixed
#二进制日志自动删除/过期的天数,默认值为0,表示不自动删除
expire_logs_days = 0

特别注意:不能把字母间的 aa_ff 写成 aa-ff

2.2重启service

找到mysql.server,重启
[root@jdap01 support-files]# ./mysql.server restart
如果重启失败:说明设置的参数不对(检查大小写,空格和字母间的连接符)

2.3注册可以访问主库文件的用户
mysql> grant replication slave,replication client on . to mysql@’195.111.2.2’ identified by ‘mysql1234’;

注:
mysql为用户名;
mysql1234为密码;
195.111.2.2为从库的IP;

2.4展示主库日志信息
执行以下命令
mysql> show master status ;
显示如下

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000004 |      154 | test         | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

记录下:mysql_bin.000004和154(从库中配置需要用到)

3 从服务器配置【195.111.2.2】

3.1修改MySQL的配置文件my.cnf

[root@jdap01 ~]# vi /etc/mysql/my.cnf

在【mysqld】下加入以下内容:
必须添加:

#server_id是服务器的id
server_id=51
#开启二进制日志
log_bin=mysql_bin
可选择添加:
#不需要备份的数据库
replicate_ignore_db = mysql
#需要备份的数据库
replicate_do_db=test

注:还有很多配置,这里就不一一介绍了

3.2设置同步(之前没配置过,可跳过此步骤,直接执行3.3)
3.2.1重置同步

清除此前可能存在的同步:
mysql> reset slave;

3.2.2停止同步

停止同步,默认同步是开启的:
mysql> stop slave;

3.3 配置同步

mysql> change master to master_host='195.111.2.1',master_user='mysql',master_password='mysql1234',master_log_file='mysql_bin.000004',master_log_pos=154;

注:
master_host表示主库的IP
master_user表示主库master上同步的用户(2.3中的用户名)
master_password表示同步的密码(2.3中的密码)
master_log_file表示从哪个binlog文件开始同步
master_log_pos表示从该binlog文件的哪个pos节点位置开始同步
其中master_log_file和master_log_pos就是主库设置2.4中记录的binlog文件名和pos位置节点

3.4查看同步状态
mysql> show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 195.111.2.1
                  Master_User: mysql
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql_bin.00004
          Read_Master_Log_Pos: 154
               Relay_Log_File: V_wangshenweb01-relay-bin.000002
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql_bin.00003
             Slave_IO_Running:Yes
            Slave_SQL_Running: Yes

如果Slave_IO_Running:Yes 和Slave_SQL_Running: Yes 都为Yes,说明配置成功

如果为以下状况

*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 195.111.2.1
                  Master_User: mysql
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql_bin.00004
          Read_Master_Log_Pos: 154
               Relay_Log_File: V_wangshenweb01-relay-bin.000002
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql_bin.00003
             Slave_IO_Running:No
            Slave_SQL_Running: No

运行以下命令开始复制;
mysql> start slave;
执行没有错误,再执行
mysql> show slave status\G;
如果Slave_IO_Running:Slave_SQL_Running都为Yes,说明配置成功

如果出现以下状况:
mysql> show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 195.111.2.1
                  Master_User: mysql
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: log_bin.000005
          Read_Master_Log_Pos: 154
               Relay_Log_File: V_wangshenweb01-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: log_bin.000005
             Slave_IO_Running: No
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test
          Replicate_Ignore_DB: mysql

并且下边报的错为:

 Last_IO_Errno: 1236
 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

这个错误是主从的一个日志问题,需要简单的配置一下,步骤如下:
1、停止从库同步【在从库中做操作】
mysql> stop slave;
2、清空主库日志【在主库中做操作】
mysql> flush logs;
3、查看主库状态并记录mysql_bin.000005和154
mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000005 |      154 | test         | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4、在从库中重新输入对应的日志文件位置和pos节点
mysql> change master to master_host='195.111.2.1',master_user='mysql',master_password='mysql1234',master_log_file='mysql_bin.000005',master_log_pos=154;

5、启动从库
mysql> start slave;

6、mysql> show slave status\G;

此时如果Slave_IO_Running:Slave_SQL_Running都为Yes,配置成功

注:

Slave_IO_Running:No 说明可能是从库与主库网络不通
Slave_SQL_Running: No  说明可能是从库与主库数据不一致
Slave_IO_Running:Connectiong 这种情况也可能出现

出现以上情况,大致归为以下几点原因:

1、可能是因为防火墙
2、Selinux中SELINUX设置成disabled
3、网络不通
4、Pos不对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值