**
Mysql主从复制服务器搭建步骤
Mysql服务器主主复制容易出现的问题就是:
①数据混乱;
②主键可能重复;
从而为了提高MySQL服务器稳定性 ,就出现了MySQL服务器主从复制。MySQL服务器主从复制(下问就以主从代替)让mysql服务器稳定性提升,避免单台mysql服务器宕机后影响整个业务,当出现宕机问题后,可以立即使从机提升为新的主服务器。从而实现sql高可用冗余性。
不废话了,接下来我们来配置一下!
一、操作系统:Centos7
首先需要搭建2台mysql服务器
搭建步骤可以参考我之前的文章
虚拟机CentOS搭建PHP开发环境以及安装Memcached
1. 查看主从服务器IP:
IP查看命令
ipconfig/all
主服务器:
从服务器:
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
① 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;
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的值不能随便写.在主服务器中查看相关信息:
10.开启从服务器:
a) mysql>start slave;
11.常见错误1:
解决方案:
mysql>stop slave;
mysql>reset slave;
重新执行 change master ****代码
12. 测试是否成功
①打开主服务器的mysql和从服务器的mysql,默认有三个数据库
②创建一个数据库,现在有四个数据库
③打开从服务器的数据库,变成四个数据库说明主从复制成功
④在从服务器的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.附件