MySQL主从复制的优点:
如果主服务器出现问题, 可以快速切换到从服务器提供的服务,保证高可用性
可以在从服务器上执行查询操作, 降低主服务器的访问压力
可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务
1、准备两台主机,搭建好mysql数据库
主机A: 192.168.12.134
从机B: 192.168.12.135
mysql安装请访问:https://www.rmcxy.top/?p=100
2、先登录主机A、在服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE
mysql>GRANT REPLICATION SLAVE ON *.* TO '账号'@'从机ip' IDENTIFIED BY '密码'
赋予从机权限,有多台从机,就执行多次
例如:mysql>GRANT REPLICATION SLAVE ON *.* TO 'dream'@'192.168.12.135' IDENTIFIED BY 'Admin0226@'
如果提示错误修改密码:
alter user user() identified by "Admin0226@";
#flush privileges刷新MySQL的系统权限相关表,
mysql>flush privileges;
表示成功
3、创建数据库 test
4、打开主机A的my.cnf,输入如下:(位置一般在: /etc/my.cnf)
server-id=1#主机标示,整数 一般为ip结尾:134
log_bin=mysql-bin.log #确保此文件可写,开启bin-log
read-only=0 #主机,读写都可以
binlog-do-db=test #需要备份数据,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行
从新启动mysql服务 :/bin/systemctl restart mysqld.service
5、得到主服务器当前二进制名和偏移量,这个操作是为了在从数据库启动后从这个点开始进行数据的恢复
mysql> show master status;
记住file 和 position 的值,在配置从机时用
把test要同步的数据库导入到从数据库 (主备份到从数据库)
6、修改从数据库的my.cnf文件,增加server-id参数
server-id = 2#主机标示,整数 一般为ip结尾:134
log_bin = mysql-bin.log
从新启动mysql服务器
输入命令
mysql> change master to
-> master_host='192.168.12.134', 主服务器ip
-> master_user='dream', 创建的用户
-> master_password='Dream0226@', 用户密码
-> master_log_file='mysql-bin.000001', 主服务器的log_file值
-> master_log_pos=154; 主服务器的log_pos=值
启动slave进程
mysql> start slave;
在从服务器进行show salve status验证
Mysql>SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
查看这两个,都是yes表示成功
修改主数据库 同步到从数据库
常见错误:
Slave_IO_Running: No
Slave_SQL_Running: Yes
首先要查找到mysql的安装地址
Mysql>show variables like 'datadir';
然后通过mysql生成一个uuid进行记录等会用于修改
Mysql>Select uuid()
然后进入datadir目录
Cd /var/lib/mysql/
Vim auto.cnf
把里边的uuid替换掉
重新启动服务器