(二)mysql主从复制搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a281246240/article/details/83343166

mysql通过什么实现主从复制?

通过mysql本身自带的binlog日志文件来实现主从复制,mysql会把所有的操作存储在binlog日志中,从库同步主库中的binlog日志,从库得到主库的操作记录,从库再执行记录,实现了主从复制,数据一致。

主从优势:数据库备份   读写分离  写需要事务锁表  读不需要    相比单库来说有大幅度的性能优势

接下来具体操作:

(一)主库创建mysql用户

从库去读取主库的binlog日志,需要主库的用户名/密码,才能读取到日志文件

1用户名/密码,2指定访问主机ip,3指定权限

创建用户:

纠正:上述图中的*应为%

create user 'repl'@'192.168.11.%' identified by 'password'

@后面接访问主机的ip,root用户的为localhost,代表之后本机才能访问,此处一般严谨定义,提高安全策略,截断外部机器访问,数据更加安全

接下来为新创建的用户授权:

grant replication slave on *.* to 'repl'@'192.168.11.%' identified by 'repl';

salve代表权限,*.*代表所有库的所有表,授权之后从库就能用这个用户登陆主机库了。

(二)主机库mysql的binlog配置

mysql5.7默认binlog日志是关闭状态:

开启mysql的binlog日志:

quit退出mysql操作,进入MySQL的配置文件:vim /etc/my.cnf,修改该配置文件:

加上述两行配置,server-id为节点id,不能与其他节点一致,log-bin指定binlog日志文件的目录,配置完service mysqld restart重启mysql服务

再查看配置是否成功:

ls下看到多了两个文件,index为日志索引文件,000001为第一个日志文件,每次服务器重启会创建一个日志文件

主机msyql的binlog文件配置成功

(三)从节点配置

首先克隆一台虚拟机作为从节点,指定该机器ip,修改mac地址,把网络适配器中的mac地址赋值到虚拟机网卡配置文件中,

vi /etc/sysconfig/network-scripts/ifcfg-eth0进入网卡配置文件并修改HWADDR值,重启reboot

启动网络出现问题:

device eth0 does not seem to present

做如下操作:

rm -rf /etc/udev/rules.d/70-persistent-net.rules

然后再reboot重启机器,service network restart重启。

从节点机器配置完毕,接下来配置从节点msyql

首先配置从节点mysql的binlog日志:

进入mysql配置文件vim /etc/my.cnf,修改后重启mysql服务

再指定从节点所依赖的主节点的ip/端口/用户信息:

change master to master_host='192.168.11.17',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=0;
 

设置成功。

注意reboot会使得之前设置的server-id失效,会报 The server is not configured as slave; fix in config file or with CHANGE MASTER TO,需重新设置,或者全局设置。

设置成功后启动从节点:

查看从节点连接状态show slave status \G;

如果报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs,需要修改从节点机器的uuid:

cd /var/lib/mysql 修改auto.cnf文件中的值即可。

出现问题:last_sql_error:error operation drop user failed for,出现这个问题的原因是主库把用户删除了,此问题根源是文章开始部分需纠正之处所引起,而从库还存在这用户的使用,解决办法为在从库上依次执行:stop slave;  set global sql_slave_skip_counter=1; start slave;

再次show slave status \G;查看从库状态,当slave_io_running slave_sql_running 的值都为yes时说明配置成功。

最后,我们来测试,主从功能,给主库建表并插入数据,看从库是否同步:

主库操作:

从库结果:

mysql主从复制搭建成功。

猜你喜欢

转载自blog.csdn.net/a281246240/article/details/83343166