linux下配置mysql主从复制
上次做完windows下的主从复制,这回是linux的从机配置,直接上内容
主机:windows下的mysql
从机:linux下的mysql
一、linux安装mysql
1.查看系统是否安装mysql:rpm -qa | grep mysql
2.下载mysql资源包:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
(1)如果报错:bash: wget: command not found 未找到wget命令 需要安装
(2)安装wget:yum -y install wget
3.安装下载的包:sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
4.安装mysql:yum install mysql-server
5.用root登录mysql -u root
(1)报错:error 2002 (HY000):Can.... 原因是:/var/lib/mysql 的访问权限问题
(2)chown root /var/lib/mysql/ 设置权限
(3)service mysqld restart 重启服务
6.进入mysql库中:use mysql;
7.设置密码:update user set password=password('123456') where user = 'root';
8.设置root账户远程链接:GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
9.关闭防火墙:systemctl stop firewalld.service (允许外网访问,正常是开放端口)
到此mysql安装完毕
主机配置跟上一篇文章内容一样(注意账号和权限问题)
二、配置从机my.cnf
首先要在从机上有跟主机上一样的要复制的数据库
1.输入命令:vi /etc/my.cnf mysql默认配置文件放在etc下
2.进入之后按 i 开启编辑模式
在[mysqld] 下面添加:
#从数据库配置
server_id=2
log-bin=mysql-bin
按esc 然后 :wq 保存退出
3.上面配置好了 我们进入mysql
mysql -uroot -p123456
4、然后主从复制的创建账号密码 (这个账号密码要与主库保持一致)
grant all privileges on *.* to 'test'@'%' identified by 'yujie' with grant option;
5.slave
与 master
建立连接,进行数据同步 master_host 主机ip; master_user 账号;master_password 密码;master_log_file、master_log_pos 都是在主机获取的
change master to master_host='192.168.1.18',master_user='test',master_password='yujie', master_log_file='mysql.000006',master_log_pos=937;
6.重启mysql 进入mysql 输入:
show slave status \G;
Slave_IO_Running: Yes Slave_SQL_Running: Yes以上两项都为Yes说明配置成功。
注意:
如果 Slave_IO_Running :Connecting
要检查几个方面:
1.主机从机之间是否能 ping 通 ip
2.从机账号权限是否正确,可以访问到主机
3.防火墙
4.还有就是我遇到的问题 把从机的配置放到了 [mysqld_safe] 下
更多Connecting问题参考:https://www.cnblogs.com/powerwu/articles/11381736.html
如果:Slave_IO_Running :No
原来是我两台虚拟机的是直接复制过来的,mysql是的datadir下的auto.cnf文件被直接复制过来了,导致UUIDs相等,所以无法开启slave;我们只要保证auto.cnf文件里的内容不一致就行了
master_log_file与master_log_pos这个的值 在主机进入mysql命令行输入
show slave status \G;
如果从数据库读取报错(比如从数据库做了写操作,导致读取执行日志文件失败,主从复制会失效)
需要重启从数据库
关闭: stop slave;
启动:start slave;
加QQQ群一起交流: 829707388