mysql设置主从复制与读写分离

Author Avatar
yyq 2020-10-07 11:49:17
  • 二维码

mysql设置主从复制与读写分离

        当网站流量日益剧增,并发量也越来越高,一台mysql数据库可能不能满足大量的数据请求,在高峰期返回数据慢,还有可能发生宕机的现象,这时可以考虑新增一台mysql数据库服务器,采用主从复制,读写分离的方式缓解mysql服务的压力。

        

        NO1:开启mysql服务器二进制日志文件My-bin.log,主从复制会根据日志记录的位置来进行同步

            a:Windows开启方式,打开my.ini,修改如下项

                log-bin=mysql-bin

                binlog_format=mixed

                server-id=1

            这里新增项log保留日期,要不然磁盘被用空间会蹭蹭往上涨

                expire_logs_days = 7  #限制保留7天

            修改完成后重启mysql服务。

    

            b:Linux开启方式,打开配置文件my.cnf,修改如下项

                log-bin=mysql-bin

                binlog_format=mixed

                server-id=1 

            修改完成后重启mysql服务,service mysqld restart


        NO2:mysql用户管理操作

            为了安全,一般不会使用root用户来操作数据库,此处需要新建用户,来操作指定的数据库,操作命令如下:

            grant all on yyq.* to 'yyq'@'%' identified by '123456';  

            flush privileges;

            创建用户yyq密码123456,赋予所有权限,用来处理yyq库下的所有表。


        NO3:此处主要记录linux版本配置方式
        主服务器:192.168.1.111    从服务器:192.168.1.222

        开始配置主服务器

            首先操作NO1-》b,确定server-id=1

            然后创建账号用于从服务器同步数据,命令如下:

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

                flush privileges;

            再创建一个用户用于远程登录,用root登录mysql,操作步骤NO2

            最后查看当前master服务器的状态 命令:show master status;显示正常则表示主服务器配置完成;


        NO4:开始配置从服务器

            首先操作NO1-》b,确定server-id=2

            然后重启mysql服务,如果加入服务了,可以执行service mysqld restart命令,没有的话可以操作kill杀掉进程再开

            再创建一个用户用于远程登录,用root登录mysql,参照操作步骤NO2

            关闭从服务器slave同步服务,命令:slave stop;

            配置slave服务,语法:

                change master to master_host='主服务器IP地址',master_user='授权用户名',master_password='授权用户密码',master_log_file='二进制日志文件名称',master_log_pos=记录的pos位置;

                change master to master_host='192.168.1.111',master_user='slave',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=528;

            启动slave服务,命令:slave start;

            最后查看是否配置成功,命令:show slave status\G;

            找到如下项,表示配置主从复制成功:

                Slave_IO_Running: Yes

                Slave_SQL_Running: Yes

        

        NO5:通过NO4操作,我们就完成了一个主从复制的结构搭建,如果不成功,考虑是否是防火墙禁止了同步服务,可以测试时关闭防火墙,命令如下:

            service iptables stop;

    

        NO6:处理读写分离

            a:原生的php读写分离:

                $con_write = mysql_connect('192.168.1.111', 'yyq', '123456');  //连接主服务器

                $con_read = mysql_connect('192.168.1.222', 'yyq', '123456'); //连接从服务器

                然后根据执行语句进行读写判断,读就连接从mysql,写就连接主mysql;

            

            b:Tp框架实现读写分离 

                在数据库配置文件操作,Tp框架支持数据库分布式配置,自行查看开发手册章节--《分布式数据库支持》

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语