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

了解主从复制原理

一,前期准备

      1,VM虚拟机  (安装可参考:https://www.cnblogs.com/yoyoblogs/p/10942257.html,https://blog.csdn.net/tsundere_x/article/details/104263100)

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

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

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

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

二:环境安装操作

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

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

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

     接下来在服务器中查找是否有相关的mysql包文件 :find / -name mysql ,为了不影响后续安装mysql的操作 将查询出来的文件删除,三个文件可同时删除,记住要留空格额.在运行find / -name mysql查看是否有相关的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/my.cnf进行编辑跳过授权重置mysql密码,skip-grant-tables ##追加此行,跳过权限表.保存文件:wq!.重启mysql 服务: service mysqld restart.可不修改密码直接进行下一步操作.(另外一台服务器同理操作),实际应用一定要设置密码保证安全额.

接下来修改密码参考 https://blog.csdn.net/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/my.cnf

  添加如下配置

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

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/my.cnf

 添加如下配置

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

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的数据同步:start slave;

查看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中插入几条数据在从服务器中也可以同步复制过去,完美.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值