mysql主从配置-吐血总结
主IP:192.168.0.21
从IP:192.168.0.55
主数据库上执行:
创建账号并授权给从数据库
create user 'hanao'@'192.168.0.55' identified by 'hanao.';
grant replication slave on *.* to 'hanao'@'192.168.0.55';
flush privileges;
vim /etc/my.cnf
server-id=1 //唯一id,主数据库必须比从数据库小
log-bin=mysql_bin //logbin文件
service mysqld restart
登录数据库:show master status;
从数据库上执行:
vim /etc/my.cnf
server-id=2 //唯一id,主数据库必须比从数据库小
relay-log=slave_relay_bin //中继日志文件,用来存放I/O线程获取的日志信息
service mysqld restart
登录数据库:
change master to
master_host='192.168.0.21', //主数据库的ip
master_user='hanao', //主数据库授权的远程登录账号
master_password='hanao.', //主数据库授权的远程登录密码
master_log_file='mysql_bin.000001', //主数据库的日志文件
master_log_pos=154; //主数据库日志文件中的pos值
start slave;
show slave status\G;
测试
主库:
show databases;
create database hanao;
use hanao;
create table student(id int not null,name varchar(100));
insert student(id,name) values(1,'hanao'),(2,'ha');
从库:
show databases;
use hanao;
select * from student;
借鉴:https://blog.csdn.net/h1228322088/article/details/116673275
坑1:
显⽰如下情况:
Slave_IO_Running: Yes
Slave_SQL_Running: No
表⽰slave不同步
解决⽅法⼀(忽略错误,继续同步):
1、先停掉slave
mysql> stop slave;
2、跳过错误步数,后⾯步数可变
mysql> set global sql_slave_skip_counter=1;
3、再启动slave
mysql> start slave;
--------------------------------------------------------
借鉴链接:https://wenku.baidu.com/view/4ea6ac28a5c30c22590102020740be1e650eccb3.html
坑2:
显⽰如下情况:
Slave_IO_Running: NO
Slave_SQL_Running: yes
来到从服务器的mysql;
stop slave;
change master to master_log_file='mysql-bin.000012',master_log_pos=154;//这里的file和pos都是上面主服务器master显示的。
start slave;//这时候就应可以了
show slave status \G;//结果如下: