700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MySQL主从复制和读写分离实现(上)

MySQL主从复制和读写分离实现(上)

时间:2020-10-17 17:40:33

相关推荐

MySQL主从复制和读写分离实现(上)

了解主从复制原理

一,前期准备

1,VM虚拟机 (安装可参考:/yoyoblogs/p/10942257.html,/tsundere_x/article/details/104263100)

2,安装centos7(镜像下载参考:/s/1XIf9lAxarLtVHHUqaE1LKQ 提取码:wfxe,如失效,可自行下载其他)

3,ftp连接工具(也可在虚拟机机终端中操作,就是麻烦一些)

4,准备两台服务器 ,参照1中克隆步骤(我的示例服务器是 127(主) 128(从) )

5,下载对应的mysql安装文件(我示例装的是5.7.29版本.下载地址:/downloads/mysql/)

二:环境安装操作

1, 1,2步骤顺利完成安装,安装好vmware并在其下安装好centos7后,我尝试ssh端连接不上.ping centos 的IP地址,出现如下错误:

可参考:/A_jungle/article/details/80285147进行处理,没有此错误,自动跳过此步骤

2,查看是否安装mysql : rpm -qa | grep -i mysql

接下来在服务器中查找是否有相关的mysql包文件 :find / -namemysql ,为了不影响后续安装mysql的操作将查询出来的文件删除,三个文件可同时删除,记住要留空格额.在运行find / -namemysql查看是否有相关的mysql包文件.另外一台服务器同理操作.

3,接下来将下载好的mysql包解压上传到服务器(另外一台服务器同理操作)

4,接下来进行mysql服务端和客户端的安装(另外一台服务器同理操作)

安装服务端:rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm --force --nodeps

安装客户端:rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm --force --nodeps

5,安装成功以后进行连接数据库mysql -uroot -p这个时候肯定是不知道密码的,点击enter进行下一步是会有一个报错的.接下来我们可以对/etc/f进行编辑跳过授权重置mysql密码,skip-grant-tables ##追加此行,跳过权限表.保存文件:wq!.重启mysql服务:service mysqld restart.可不修改密码直接进行下一步操作.(另外一台服务器同理操作),实际应用一定要设置密码保证安全额.

接下来修改密码参考/hdyebd/article/details/89153934;最后如果还是无法连接报错:ERROR 1820 (HY000): Unknown error 1820的话进行如下操作:

需要修改两个全局参数:

mysql> set global validate_password_policy=0;

mysql> set global validate_password_length=1;

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;

Query OK, 0 rows affected (0.00 sec)

mysql> set password=password("mysql");

Query OK, 0 rows affected, 1 warning (0.00 sec)

.三:主从服务器配置

1,为了主从复制,创建数据库:create database demo;

2,编辑主服务器,修改配置文件:vi /etc/f

添加如下配置

#日志文件的名字(可自定义为自己的)

log_bin=master-a-bin

#日志文件的格式

binlog-format=ROW

#服务器的id一定要是唯一的值

server-id=1

对应需要实现主从复制的数据库(根据自己的数据库进行编辑)

binlog_do_db=demo

3,配置完之后登陆主服务器数据库给从服务器授权:grant replication slave on *.* to 'root'@'192.168.68.%' identified by 'root';然后刷新权限:flush PRIVILEGES;

4,编辑从服务器

修改配置文件:vi /etc/f

添加如下配置

#日志文件的名字(可自定义为自己的)

log_bin=master-a-bin

#日志文件的格式

binlog-format=ROW

#服务器的id一定要是唯一的值

server-id=2

保存重启主从服务器 :service mysqld restart

5,验证主从复制是否成功

进入mysql服务器,查看主服务器的状态:show master status;

6,登陆从服务器并且设置主从复制的日志和偏移量:

change master to master_host='192.168.68.127',master_port=3306,master_use

r='root',master_password='root',master_log_file='master-a-bin.000001',master_log

_pos=154;

7,启动slave的数据同步:startslave;

查看slave的状态:show slave status\G;

使用数据库连接工具测试连接是否成功:

我这里是可以通过数据库连接工具连接成功的,如果有连接不成功报错的:以下三点原因进行排查

1,防火墙 2,3306端口未开放 3,未授权

无论能不能连接成功都要进行授权操作,在主服务器进行将权限授权给客户端:grant replication slave on *.* to 'root'@'%' identified by 'root' with grant option;这时候会报一个1819的错,这个报错的主要原因是数据库对于密码的要求.我这里密码root是纯字母.不符合数据库的密码要求.可以通过修改配置文件修改密码验证的规则:

set global validate_password_length=1;

set global validate_password_policy=0;

这样的话纯字母密码就可以通过密码验证了.再次运行grant replication slave on *.* to 'root'@'%' identified by 'root' with grant option;就运行ok了

然后在主服务器上demo数据库中新建一个表,我的是Student表,建表自行百度

登陆从服务器查看是否进行主从复制了 ,Student表在从服务器中也存在了.

往主服务器Student中插入几条数据在从服务器中也可以同步复制过去,完美.

到此主从复制就已经结束了.希望能帮到大家.读写分离的实现是一定基于主从复制的,下个文章写读写分离.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。