MySQL主从分离实现 (2)

修改root密码
mysql> SET PASSWORD = PASSWORD('123456');
mysql> FLUSH PRIVILEGES;
初次登录没有修改root的密码,操作数据库会出现如下错误提示,那么需要修改root用户的密码
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

9. 设置mysql远程可访问(前提是防火墙必须关闭,chkconfig iptables off:设置自动启动为关闭,service iptables stop:关闭防火墙)
先登录到mysql
mysql> use mysql
mysql> update user set host = '192.168.0.148' where user = 'root';
mysql> FLUSH PRIVILEGES;
192.168.0.148即是可远程访问本地mysql的远程ip,若想任意ip都能访问本地mysql,那么只需要将192.168.0.148换成%即可
mysql> update user set host = '%' where user = 'root';

MySQL主从分离实现

MySQL主从库配置

  本文将ip为192.168.0.188的主机作为master,ip为192.168.0.152的主机作为slave,我用的mysql版本为:5.7.31。当然我们也可以在本机下载两套mysql软件,设置不同端口后进行启动,也是可以配置出主从同步来。
1. master上配置bin-log日志
修改mysql的配置文件:# vim /etc/my.cnf,加上如下内容,修改配置后需要重启mysql服务器

log-bin= master-bin #[必须]启用二进制日志 log-bin-index=master-bin.index server-id = 4 #[必须]服务器唯一ID,默认是1,最好取ip的后3位 expire-logs-days = 7 #只保留7天的二进制日志,以防磁盘被日志占满

测试log_bin是否成功开启
mysql> show variables like '%log_bin%';
出现下图,log_bin为ON则表示开启成功,OFF表示开启失败

MySQL主从分离实现

配置好后,查看主服务器状态:show master status

MySQL主从分离实现

2. slave上配置relay-log
配置从服务器:vim /etc/my.cnf,点击 i 进入编辑模式,添加如下配置:

relay-log-index=slave-relay-bin.index relay-log=slave-bin server-id=152 #只要和master的server-id不一样就可以了

MySQL主从分离实现

3. 将master和slave联系起来,slave需要知道master的地址

master的数据库中建立备份账号
repl为用户名,192.168.0.152代表从数据库的主机地址,如下表示远程地址为密码为123的,用户名是repl就可以连接到master主机,并为其授予 replication slave 权限。123为master的连接密码。
mysql> create user repl; # 创建用户名为repl的用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.152' IDENTIFIED BY '123';
mysql> FLUSH PRIVILEGES;
mysql> use mysql;
mysql> select user,authentication_string,host from user;
可看到我们刚创建的备份账号:

MySQL主从分离实现

重启MySQL服务并设置读取锁定:登录mysql],mysql> flush tables with read lock;读取锁定的意思是只能读取,不能更新,以便获得一个一致性的快照
查看主服务器上当前的二进制日志名和偏移量值:

MySQL主从分离实现

4. 我们已经在主库配置好了允许从库访问主库的用户名和密码,下面我们对slave进行操作:
mysql> change master to master_host='192.168.0.188',master_port=3306,master_user='repl',master_password='123',master_log_file='master-bin.000001',master_log_pos=154;
其中的master_log_file,就是主库中file,在主库中使用 show master status;就可以看到了。

MySQL主从分离实现

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspsyd.html