**

Mysql主从复制服务器搭建步骤

Mysql服务器主主复制容易出现的问题就是:
①数据混乱;
②主键可能重复;

从而为了提高MySQL服务器稳定性 ,就出现了MySQL服务器主从复制。MySQL服务器主从复制(下问就以主从代替)让mysql服务器稳定性提升,避免单台mysql服务器宕机后影响整个业务,当出现宕机问题后,可以立即使从机提升为新的主服务器。从而实现sql高可用冗余性。

不废话了,接下来我们来配置一下!

一、操作系统:Centos7

首先需要搭建2台mysql服务器

搭建步骤可以参考我之前的文章
虚拟机CentOS搭建PHP开发环境以及安装Memcached

1. 查看主从服务器IP:

IP查看命令

ipconfig/all

主服务器:

个人服务器部署mysql_centos


从服务器:

个人服务器部署mysql_centos_02

2. 主从分别安装mariadb

yum install mariadb mariadb-test mariadb-server
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf #拷贝配置文件
提示是否覆盖,输入y继续

3.修改主服务器

vi /etc/my.cnf

个人服务器部署mysql_云服务器_03


个人服务器部署mysql_mysql_04


① server-id=120 (服务id,每个id不能重复,都是唯一的,用ip的最后三位即可,这是一个技巧)
② log-bin=master-bin (二进制日志,文件格式为master-bin.0000001)
③ log-bin-index=master-bin.index (这一句可能没有,自己添加)

4. 启动主服务器:

systemctl restart mariadb.service
mysql>show master status;

5. 登录主服务器,并增加用以同步的账户:这里的repl是自己定义的用户名

a)    mysql>create user repl;
b)    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从ip' IDENTIFIED BY ' repl的用户密码';
c)    flush privileges;//刷新MySQL的系统权限相关表
d)    说明:为从服务器创建一个用户repl,有连接主服务器并复制数据的权限.
e)    如果从ip写%,表示允许所有的IP访问.可以自己设置只允许哪些IP访问.(例如192.168.%.%)
f)    生产环境中不建议使用root用户,必须重新创建新用户进行登陆
g)    账号验证(查看账号是否添加到数据库中):
i)    show databases;
ii)   use mysql;
iii)  show tables like ‘%user%’;
iv)   select User,Password,Host from user;

个人服务器部署mysql_linux_05

6. 重启主服务器

a)    systemctl restart mariadb.service #重启mariadb

7. 关闭CentOS7主/从防火墙:

a)  如果不关闭会导致主从复制失败
b)   systemctl stop firewalld

8.修改从服务器:

a)   server-id=130
b)   log-bin=relay-bin
c)   log-bin-index=relay-bin.index
d)   relay-log=slave-relay

9.在从服务器界面输入代码切换至主服务器:

a)   mysql>change master to master_host='主ip', 
b)   master_port=3306,
c)   master_user='repl',
d)   master_password=' repl的用户密码', 
e)   master_log_file='master-bin.000003',
f)   master_log_pos=715;

上图中的master_log_file和master_log_pos的值不能随便写.在主服务器中查看相关信息:

个人服务器部署mysql_centos_06

10.开启从服务器:

a)  mysql>start slave;

11.常见错误1:

个人服务器部署mysql_linux_07


解决方案:

mysql>stop slave; 
mysql>reset slave;
重新执行 change master ****代码

12. 测试是否成功

①打开主服务器的mysql和从服务器的mysql,默认有三个数据库

个人服务器部署mysql_linux_08

②创建一个数据库,现在有四个数据库

个人服务器部署mysql_个人服务器部署mysql_09

③打开从服务器的数据库,变成四个数据库说明主从复制成功

个人服务器部署mysql_个人服务器部署mysql_10

④在从服务器的mysql中执行 show slave status \G;命令查看从数据库的复制功能状态.

Master_Host

表示主数据库地址

Master_User

使用哪个用户登录

Master_Port

连接端口

Read_Master_Log_Pos: 245

同步读取二进制日志的位置,必须大于或等于下面的Exec_Master_Log_Pos数据

Slave_IO_Running: Yes

必须为Yes,否则需要查找原因

Slave_SQL_Running: Yes

必须为Yes,否则需要查找原因

Exec_Master_Log_Pos: 245

⑤e)你也可以在主服务器的数据库中插入几条数据,在从服务器的数据库中查询,看看有没有数据.

13.附件

个人服务器部署mysql_mysql_11


个人服务器部署mysql_centos_12