MySQL的主从复制

折腾了花一天才搞完,但是这个真的好简单。步骤完全正确的情况下配置MySQL的主从复制不到几分钟就搞定了,不自黑了,赶紧记下笔记先;

1.首先 确保两台服务器的MySQL版本必须一致,不然有的操作5.7支持,5.3不支持这种就尴尬了,同步肯定会出错的

2.在主服务器(Master)添加一个账号供从服务器(Slave)使用

create user  username@'ip段' identified by 'password' ;    eg:ip段表示指定访问Master的Slave主机ip  设为'%'表示任何一台服务器都可以连接

对账号进行授权

grant replication slave on *.* to 'username'@'IP段';

3.对Master和Slave进行配置  

主服务器:

vi /etc/my.cnf      //MySQL路径自己找

在[mysqld] 下面添加

log-bin = mysql-bin

server-id = 1     //server-id一定是唯一的,

#bind-address=127.0.0.1     //这个选项表示只允许本地访问,屏蔽掉

从服务器:

log-bin = mysql-bin

server-id = 2

read_only         = 1     //设为只读的  可以不加

4.数据同步,先确保两个服务器的数据库一样

在Master命令行

mysqldump -uroot -p --single-transaction --master-data --triggers --routines --all-databases > /backup/all.sql         //导出所有的数据,-single-transaction保证事务一致性

在Slave命令行

scp uname@server:/backup/all.sql  /var/dumpsql/            //scp把远程服务器上的文件复制到当前服务器上面

然后存放导入Slave里面

mysql -u root -p < /var/dumpsql/all.sql              //输入密码 搞定,手动同步了

5.

Master 查看状态

mysql> show master status;

最好reset一下master 让mysql-bin回到出事状态000001;

mysql>reset master;

Slave 配置复制链路

mysql>change master to master_host='Masterip',master_user='username',master_password='password',master_log_file='mysql-bin.000007',master_log_pos=3026;

mysql>start slave;      //启动从服务器

mysql>show slave statusG;         //查看slave服务器状态

如果显示no的话

mysql>stop slave;

mysql>set global sql_slave_skip_counter=1;

mysql>start slave;

mysql>show slave statusG;    //再试试就可以了 

关键点:

1.添加slave账号

2.设置两台服务器的server-id

3.mysqldump同步数据

4.配置复制链路,启动slave

可能遇到的错误

① 添加slave账号时报:ERROR 1396 (HY000): Operation CREATE USER failed for ‘test’@’%’ 

解决:表示已有这个账号存在,使用

mysql>select user from mysql.user where host='%';

mysql>delete from user where user='username';//删掉对应的账号

mysql>drop user username@'IP段';

mysql>flush privileges;//刷新,重新创建 搞定ok

原文地址:https://www.cnblogs.com/cyq632694540/p/6910246.html