mysql主从复制
1 原理
MySQL复制技术有以下的特点:
数据的分布、
负载平衡、
备份、
备可用性和容错行
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
重启mysql service mysqld restart
然后 输入 mysql 进入mysql 然后 use mysql 然后执行改密码UPDATE
user
SET
Password
=
password
(
'new-password'
)
WHERE
User
=
'root'
;
最后 flush
privileges
;刷新立即执行。
然后service mysqld stop; 最后进入my.cnf 中删除 skip-grant-tables 最后重启mysql 用mysql -u root -p 密码登录就可以了。
配置远程访问mysql
启动master和slave
在主服务器上建立帐户并授权slave:
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'192.168.1.96' identified by 'q123456'; //一般不用root帐号, “%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
这里要注意 要现在master上建立一个账号 供slave来访问用 这里直接用账号mysync 密码 q123456
@'192.168.1.96'表示允许这个ip来访问master 如果写成% 这表示允许全部ip都能访问 。 这里设置密码有点坑 会报错
mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
参考 http://blog.csdn.net/kuluzs/article/details/51924374 改配置使mysql不验证密码的难易程度。把密码这个验证变成low就好了。
接下来查看master状态
这两个参数很重要 。
接下来切到slave上 ,change master to master_host='192.168.1.97',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=966;
这里的的
master_log_file
master_log_pos 是master上的值。切记。 查看slave中mysql的状态命令 show slave status\G
会发现
然后 这是成功的样子 现实会出现 Slave_IO_Running: No 这时候查看日志就十分重要了 日志在 mysql 日志在 /var/log/mysqld.log 可以查看日志发现问题。查看日志十分重要。会发现报错 The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. 表示mysql的server_uuid相同了 因为我是配置好master的mysql然后复制的master变成的slave。这就要更改server_uuid了 这也是坑 网上说了很多,要找到auto.cnf,网上说的很多在data/auto.cnf 但是我没找到这个文件夹 。最后
show variables like '%data%';
终于发现了auto.cnf 在 /var/lib/mysql/ 下面 ,打开auto.cnf 更改server_uuid 只要不一样就行。
然后关闭slave stop slave; 重新执行执行change master to master_host='192.168.1.97',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=966; 启动 start slave ;即可
在配置的过程中遇到很多坑,网上找了很多资料,注意一点 ,如果没有效果就多看日志,看日志很重要。谢谢大家。