centOS7.4 mysql5.7 主从复制

一:系统说明:准备两个centOS7.4 服务器  A,B 

二: 安装mysql5.7

1:停到之前的mysql 如果有安装的卸载掉。

2: 安装mysql5.7 三部曲

1)  // 指定安装包路径并下载

    ]# cd usr/local/src 

    ]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm 

2)解压rpm包到yum源上

    ]#  rpm –ivh mysql57-community-release-el7-8.noarch.rpm 

3) yum 安装mysql5.7

    ]# Yum –y install mysql-server

3:安装完成之后启动

    ]# systemctl start mysqld

4:mysql5.7 增加了密码安全机制,第一次登陆密码。输入下面语句查看

    ]# grep "password" /var/log/mysqld.log

5:如果要修改root 密码又要方便记得的话,要把这个安全机制关闭,在mysql配置文件 /etc/my.cnf 中加入 validate_password=off  注意。这句一定要加在 [mysqld] 后面

6: 主库需要开启3306/tcp 端口

    ]# firewall-cmd --add-port=3306/tcp -- permanent

    ]# firewall-cmd --reload

7:这样mysql5.7 就按照好了。两台服务器A,B 都按这个方法安装好。

二:配置主从

配置主数据库 A ip 为 192.168.0.144 (这个是我本地ip ,请自行修改)

1:修改mysql配置文件 /etc/my.cnf 插入

[mysqld]

## 主从配置

#设置服务器ID 为1表示主服务器
server-id=1
## 启动mysql二进制日志系统
log-bin=mysql-bin
## 需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-do-db=test

## 不需要同步的数据库名

binlog-ignore-db=mysql

退出保存。

2:重启mysql 

]# systemctl restart mysqld

3:登录mysql

]# mysql -u root -p  // 回车之后输入密码登录

4:查看server-id 

mysql> show variables like 'server_id';


5:增加一个可以复制的账号 rep / 123456

mysql> grant replication slave on *.* to 'rep'@'192.168.0.%' identified by '123456'; #注意:用户名slave和密码123456可以自定义

6:查看主库信息

mysql> show master status;



配置从库 B  ip 为 192.168.0.145

1:修改mysql配置文件 /etc/my.cnf 

[mysqld]

server-id=2  #设置服务器id,为2表示从服务器(也可以为其他值)

退出保存。

2: 查看server-id 是否成功

mysql> show variables like 'server_id';


3:关闭 slave->  配置复制用户 ->开启slave

mysql> stop slave;    // 关闭

mysql>change master to 

master_host='192.168.0.144',  // 主库host 

master_port=3306,   // 主库的端口

master_user='rep',   // 复制用户名

master_password='123456',   // 复制用户名密码

master_log_file='mysql-bin.000003',   // 主库的bin 文件

master_log_pos=1666;   // 主库的pos 号

mysql> start slave;   // 开启

备注:中间的语句,为了好做注释,所以全部分开写,实际执行的时候,就直接一条语句就好了,

例:

change master to master_host='192.168.0.144',

master_port=3306,master_user='rep',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=1666;


测试主从:

在主库中新建一个test 表,如果在从库也能查看到,就证明设置成功了

查看状态:

mysql> show slave status \G



这样一个主从复制就算是搭建好了。

特别说明:我也是一名菜鸟。只是搭好了这个环境。至于之后遇到的问题,请查看状态看报错信息自行处理

例: 1:主库在,从库挂了。

        2:操作失误,在从库上修改了数据,而主库没改





<think>好的,我现在需要帮助用户在CentOS 7上配置MySQL 5.7主从复制。首先,我得回顾一下用户提供的引用内容,确保步骤正确。用户已经给出了一些引用,主要涉及安装MySQL、配置二进制日志、服务器ID以及主从同步的相关设置。 首先,安装MySQL 5.7。根据引用[1],用户可能已经通过通用二进制文件安装了MySQL,但可能需要确认安装步骤是否正确。不过CentOS通常使用YUM仓库,所以可能需要调整安装方法。确保安装完成后服务正常启动,如引用[2]中的systemctl status检查。 接下来是主库配置。根据引用[4],需要编辑my.cnf文件,设置server-id和启用二进制日志。这里要注意server-id必须是唯一的,主库设为1,从库设为其他值。同时,引用[5]提到了binlog忽略数据库的选项,但用户可能不需要这个,除非有特定需求。需要确保主库的配置正确,重启MySQL服务生效。 然后创建主库的复制用户,并授权REPLICATION SLAVE权限。这部分用户可能了解,但需要明确步骤,比如使用CREATE USER和GRANT语句。 备份主库数据,使用mysqldump导出,并传输到从库。这里需要注意锁表或者使用事务一致性备份,尤其是对于InnoDB引擎,可以使用--single-transaction选项。 配置从库时同样需要修改my.cnf,设置不同的server-id,可能启用中继日志。然后导入主库的备份数据,配置CHANGE MASTER TO命令,指定主库的IP、端口、用户和密码,以及二进制日志文件和位置。 最后启动从库复制进程,检查Slave_IO_Running和Slave_SQL_Running的状态是否为Yes,确保同步正常。 可能遇到的问题包括防火墙未开放3306端口,server-id冲突,或者主从库数据不一致。需要提醒用户检查这些点,并验证同步状态。 现在需要将这些步骤整理成清晰的教程,确保用户能够一步步跟随操作,并解决常见问题。同时,根据用户要求生成相关问题,比如主从复制的监控方法、故障处理等。</think>### CentOS 7 MySQL 5.7 主从同步配置教程 #### 一、环境准备 1. 两台CentOS 7服务器(主库IP: 192.168.1.100,从库IP: 192.168.1.101) 2. 已安装MySQL 5.7,可通过以下命令验证: ```bash systemctl status mysqld.service # 检查服务状态[^2] ``` --- #### 二、主库配置 1. **修改配置文件** 编辑`/etc/my.cnf`,在`[mysqld]`段添加: ```ini server-id = 1 # 唯一标识主库[^4] log-bin = mysql-bin # 开启二进制日志 binlog-format = ROW # 推荐使用ROW格式 expire_logs_days = 7 # 自动清理7天前的日志 ``` 重启服务生效: ```bash systemctl restart mysqld ``` 2. **创建复制账户** 登录MySQL执行: ```sql CREATE USER 'repl'@'%' IDENTIFIED BY 'Repl@1234'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` 3. **锁定数据库并获取状态** ```sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; # 记录File(mysql-bin.000001)和Position(154) ``` --- #### 三、从库配置 1. **修改配置文件** 编辑`/etc/my.cnf`,添加: ```ini server-id = 2 # 区别于主库的ID relay-log = mysql-relay-bin # 开启中继日志 read_only = ON # 从库设为只读模式 ``` 2. **恢复数据同步** 使用`mysqldump`导出主库数据: ```bash mysqldump -uroot -p --all-databases --master-data > master_db.sql ``` 传输到从库并导入: ```bash mysql -uroot -p < master_db.sql ``` 3. **启动复制进程** 登录从库MySQL执行: ```sql CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl', MASTER_PASSWORD='Repl@1234', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; START SLAVE; ``` --- #### 四、验证同步状态 ```sql SHOW SLAVE STATUS\G ``` 检查以下两个字段: - `Slave_IO_Running: Yes` - `Slave_SQL_Running: Yes` --- #### 五、常见问题解决 1. **连接失败** - 检查防火墙:`firewall-cmd --zone=public --add-port=3306/tcp --permanent` - 确认主库`bind-address = 0.0.0.0` 2. **同步位置错误** 重置同步: ```sql STOP SLAVE; RESET SLAVE; CHANGE MASTER TO ... # 重新指定正确binlog位置 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值