mysql服务器配置系列之(一)mysql代理服务器+主从库同步 配置步骤

mysql 主从同步 mysql代理服务器

一、搭建mysql主从同步(实现数据自动备份)

实例:
把主机192.168.4.100的数据库配置为主机192.168.4.99的从数据库

一、主数据库服务器配置

1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器mater:

[root@mysql ~]# vim /etc/my.cnf
[mysqld] 
log-bin=mysql-bin   //[必须]启用二进制日志
server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、修改从服务器slave:

[root@mysql ~]# vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin   //[不是必须]启用二进制日志
 server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台主从mysql数据库

[root@mysql ~]# /etc/init.d/mysql restart

5、在主服务器上建立帐户并授权slave:
在mysql安装客户端(#/usr/local/mysql/bin/)
1)执行下面命令:

mysql -u root -p mttang  
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';
//一般不用root帐号,%表示所有客户端都可能连,只要帐号(mysync),密码(q123456)正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

2)给用户的某个ip的授权:

mysql> grant replication slave on *.* to mysync@"192.168.145.226" identified by "q123456";
二、设置主从数据库服务器配置(从库上一定要有主库上的库)

把192.168.145.226配置为192.168.145.222的从数据库服务器
1、登录主服务器的mysql,查询master的状态

   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

2、登录从服务器的mysql,查询master的状态(查看本机是不是从服务器)
3、配置从服务器Slave:
change master to master_host=“主数据库ip”,master_user"授权用户",master_password=“授权密码”,master_log_file=“主数据库的binlog日志名”,master_log_pos=Position记录的数字

mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
         master_log_file='mysql-bin.000004',master_log_pos=308;   //注意不要断开,308数字前后无单引号。

mysql>start slave;    //启动从服务器复制功能
Slave_IO_Running: Yes(两个yes才可以同步数据)
Slave_SQL_Running: Yes

4、检查从服务器复制功能状态:

   mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主服务器地址
              Master_User: mysync   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

主从同步过程扩展:

Slave_IO_Running: io线程负责把主数据库服务器binlog日志里的sql命令同步到本机中继日志里
IO出错的原因:iptables,selinux grat 指定的binlog日志信息错误
报错信息Last_IO_Error:查看报错信息,排错

Slave_SQL_Running: sql线程负责执行本机中继日志里的sql命令,把数据写入本机的库里
SQL线程出错的原因:执行sql命令时,使用的库,表在本机不存在
报错信息Last_SQL_Error:查看报错信息,排错

以上操作过程,主从服务器配置完成。

三、在主数据库创建数据测试

1、主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

mysql> create database hi_db;
  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;
  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));
  Query OK, 0 rows affected (0.00 sec)
 
  mysql> insert into hi_tb values(001,'bobu');
  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 rows in set (0.00 sec)

2、从服务器Mysql查询:

 mysql> show databases;

   +--------------------+
   | Database               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //I'M here,大家看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 rows in set (0.00 sec)

   mysql> use hi_db
   Database changed
   mysql> select * from hi_tb;           //查看主服务器上新增的具体数据
   +------+------+
   | id   | name |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 row in set (0.00 sec)

3、完成:
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

————————————mysql数据库总结start————————————

1、如果让从库暂时不同步主数据库服务器的数据:
mysql> stop slave;

2、把从数据库服务器恢复为一台独立的数据库服务器:
[root@stu ~]# rm -rf /var/lib/mysql/master.info relay-log.info stu-relay-bin.*
[root@stu ~]# /etc/init.d/mysql restart

3、主从服务器配置某个数据库的常用选项:
[root@mysql ~]# vim /etc/my.cnf(在主数据库上配置,限制的是所有的从数据库)
binglog-do-db=库名(允许从数据库同步的库)
binlog-ignore-db=库名(允许从数据库同步的库)
从配置参数:
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)
replica-do-db=库名(只同步主数据库的库名)
replica-ignore-db=库名(不同步主数据库的库名)

4、主从同步结构模式
一主一从:(工作用的多)
一主多从:(工作用的多)
授权多个用户
主主结构:
相互授权,相互测试
主从从:
中间的从数据库服务器上sql线程执行本机中继日志文件里的sql命令不会被记录到本机的binlog日志文件里
要实现最后一从数据库同步主数据库的数据,在配置文件加入允许级联复制
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)
————————————mysql数据库总结end————————————

————————————————————————————————————————————————————————————

四、搭建mysql代理服务器(实现数据访问时的读写分离,减轻单台服务器的压力)

1、mysql代理服务+主从服务器同步
在主机(192.168.145.221)上部署mysql代理服务器,把接受到的读请求给192.168.145.226服务器(从),把接受到的写请求给192.168.145.222服务器(主)
————写只能在主数据库、从库只能读取数据
2、代理服务器配置:
1)安装提供mysql代理服务的软件包mysql-proxy-tar.gz

[root@daili ~]# tar -xf mysql-proxy-tar.gz(解压缩)
[root@daili ~]# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ /usr/local/mysqlproxy(移动并改名)
[root@daili mysqlproxy]# ls
bin include lib libexec licenses share

[root@daili mysqlproxy]# chmod +x /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua(给脚本加执行权限)

[root@daili mysqlproxy]# rpm -q lua(脚本死lua语言写的,查看有没有解释lua语言的包)
lua-5.1.4-4.1.el6.x86_64

[root@daili mysqlproxy]# netstat -utnalp | grep :3306(它监听的是3306端口,查看端口有没有被占用)

2)起代理服务: -P 代理服务器地址:端口 -r读类型ip地址:端口 -b写类型地址:端口 -s区分访问类型的脚本 &后台运行

[root@daili ~]# /usr/local/mysqlproxy/bin/mysql-proxy -P 192.168.4.101:3306 -r 192.168.4.99:3306 -b 192.168.4.100:3306 -s /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua &
[root@daili ~]# pkillmysql-proxy(如果要结束进程执行的命令)

3)在两台数据库服务器做用户授权:

mysql> grant all on *.* to mysync@"%" identified by "q123456";

4)客户端测试访问:
mysql -h 代理服务器地址 -u用户名 -p密码(并发连接数大于4才区分读写分离)

[root@daili ~]# mysql -h 192.168.145.221 -u mysync -p q123456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值