Mysql 主从+proxy安装配置
1.系统配置
1.1主机硬件配置
Intel Xeon E5506@2.13G with HT&VT-x
24G MEM & 160GHDD*2
Esxi 5.1 U1
使用esxi使一台主机分割成独立的虚拟主机以便搭建实验环境,实际使用中配置并无任何区别,注意开启HT技术可能会导致部分应用性能下降
1.2系统环境以及配置
必须选择64位linux操作系统,本例中选择centos 6.4 64位
所有系统均为默认分区minimal安装,如有需要可更具情况进行调整,否则这些设置就可以工作的很好并具有线上可用性
各服务器作用和配置如下
主机名
IP地址
用途
mysql01
192.168.0.201
  mysql-proxy
mysql02
192.168.0.202
  mysql master(主)
mysql03
192.168.0.203
  mysql slave(从)
2.mysql主从安装及配置
2.1mysql服务器必要组件安装
2.1.1安装setuptool工具(非必须)
安装setuptool工具可以以交互方式配置IP地址,网络防火墙,系统服务等.
非必要组件,可选安装.
输入命令如下
yum install -y setuptool ntsysv system-config-network-tui system-config-securitylevel-tui
根据网络状况几分钟至十几分钟安装完毕
2.1.2  一些支持工具(必须)
一下工具在安装mysql过程需要用到,必要组件,否则无法以rpm方式安装.
注意:如果以源码方式编译安装,依旧需要安装必要的编译开发工具组件.
输入命令如下
yum install -y perl libaio
根据网络状况几分钟至十几分钟安装完毕
2.2 mysql安装前的检查和准备工作
2.2.1检查当前系统存在mysql
如果当前系统存在mysql以及mysql组件,可能导致安装不成功,因此我们需要在安装开始前移除这些组件
输入以下命令
rpm -qa | grep -i mysql
可能会出现如下信息
[root@mysql02 ~]# rpm -qa | grep -i mysql
mysql-libs-5.1.66-2.el6_3.x86_64
说明当前系统存在mysql有关组件,需要移除
2.2.2 移除当前系统的mysql组件
复制2.2.1中mysql组件全部名称
使用以下命令进行移除
yum remove –y mysql-libs-5.1.66-2.el6_3.x86_64
或者
rpm –e mysql-libs-5.1.66-2.el6_3.x86_64
最后出现如下信息表示完成
[root@mysql03 ~]# yum remove -y mysql-libs-5.1.66-2.el6_3.x86_64
Removed:
  mysql-libs.x86_64 0:5.1.66-2.el6_3                                            
Dependency Removed:
  cronie.x86_64 0:1.4.4-7.el6         cronie-anacron.x86_64 0:1.4.4-7.el6      
  crontabs.noarch 0:1.10-33.el6       postfix.x86_64 2:2.6.6-2.2.el6_1         
Complete!
如有在2.2.1中有多个组件,则重复本操作
2.3 正式安装mysql服务器和客户端
请从http://dev.mysql.com/downloads/mysql/下载适合的版本
本次使用rpm方式进行安装,可以满足大部分场合的需求,如需编译安装,请根据mysql指南进行操作
注意:2.3章节全部操作均需要在主从服务器进行,并且安装过程一样
注意:本例中安装文件均存放在/root目录下,如果存放在别的目录,则以下对应的命令需要加上绝对路径
2.3.1安装mysql服务器
确认安装文件存放在/root目录下,则输入如下命令
rpm -ivh MySQL-server-5.6.15-1.el6.x86_64.rpm
稍等片刻,出现如下所示表示安装完成
[root@mysql02 ~]# rpm -ivh MySQL-server-5.6.15-1.el6.x86_64.rpm
Preparing…                ########################################### [100%]
   1:MySQL-server           ########################################### [100%]
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in ‘/root/.mysql_secret’.
You must change that password on your first connect,
no other statement but ‘SET PASSWORD’ will be accepted.
See the manual for the semantics of the ‘password expired’ flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
  /usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This i
s strongly recommended for production servers.
See the manual for more instructions.
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
  http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
2.3.2安装mysql客户端
确认安装文件存放在/root目录下,则输入如下命令
rpm -ivh MySQL-client-5.6.15-1.el6.x86_64.rpm
稍等片刻,出现如下所示表示安装完成
[root@mysql02 ~]# rpm -ivh MySQL-client-5.6.15-1.el6.x86_64.rpm
Preparing…          ##############################  [100%]
   1:MySQL-client          ############################## [100%]
2.3.3查看初始root密码
rpm安装方式安装完毕,root账号初始密码存放在/root/.mysql_secret
输入如下命令查看
more /root/.mysql_secret
输出结果如下所示
[root@mysql02 ~]# more .mysql_secret
# The random password set for the root user at Thu Dec 26 08:35:25 2013 (local t
ime): rCae1JWS
记录下rCae1JWS,此为初始密码
2.3.4启动mysql服务,并修改root密码
输入如下命令启动mysql服务
service mysql start
出现如下所示,表示mysql启动完整
[root@mysql02 ~]# service mysql start
Starting MySQL. SUCCESS!
输入以下命令,修改mysql root密码
/usr/bin/mysql_secure_installation
根据提示,完成如下操作
[root@mysql02 ~]# /usr/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user.  If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):      //输入2.3.3步骤中记录下的密码
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer ‘n’.
Change the root password? [Y/n] y      //是否修改root密码,输入Y
New password:                                     //输入新密码
Re-enter new password:                       //重复输入新密码
Password updated successfully!           //注意,请保持在两台服务器上密码一致
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y        //是否移除匿名用户,一般Y
… Success!
Normally, root should only be allowed to connect from ‘localhost’.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n      //禁止root远程登陆,否N
… skipping.
By default, MySQL comes with a database named ‘test’ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y   //是否移除测试数据库,一般Y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y         //刷新授权表,Y
… Success!
All done!  If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Cleaning up…
之后我们输入
mysql –uroot -p
并输入新密码进行mysql登陆操作,如果以上步骤没有问题,应当出现如下所示
[root@mysql02 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.6.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>
输入exit退出,并输入以下命令关闭mysql服务,以便进行下一步操作
service mysql stop
如果成功关闭,应当显示如下
[root@mysql03 ~]# service mysql stop
Shutting down MySQL…. SUCCESS!
再次提醒,以上操作应当在两台服务器上保持一致
2.4 配置mysql主从同步设置
在本章节,我们需要对mysql master和mysql slave分别进行设置,实现主从同步.
注意:本操作仅适用于全新安装的空白数据库,如果mysql master已经存在数据,应当先关闭数据库,并手工同步主从两台数据库保证完全一样
注意:配置文件仅针对主从同步,其他未写出的配置则使用默认设置,也可以根据需求自行定义,大部分情况下应当不会出现兼容性问题
2.4.1 mysql master配置
在mysql master服务器上输入以下命令
vi /etc/my.cnf
将以下配置写入到文件中
注意:#符号所在行为注释内容,建议不写入到配置文件中,注释行下一行内容请根据注释说明进行修改
[mysqld]
log-bin=mysql-bin
innodb_file_per_table = ON
#服务器id,在整个主从系统中id不应当存在重复
server-id=1
socket=/var/lib/mysql/mysql.sock
datadir = /var/lib/mysql
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
port=3306
#mysql master服务器的IP地址,既本机IP地址
report-host=192.168.0.211
保存并退出vi操作
打开防火墙3306数据端口,或关闭防火墙
service iptables stop
2.4.2 mysql slave配置操作
在mysql slave服务器上输入以下命令
vi /etc/my.cnf
将以下配置写入到文件中
注意:#符号所在行为注释内容,建议不写入到配置文件中,注释行下一行内容请根据注释说明进行修改
[mysqld]
log-bin=mysql-bin
innodb_file_per_table = ON
#slave服务器编号
server-id=2
socket=/var/lib/mysql/mysql.sock
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
port=3306
#slave服务器IP地址,即本机IP地址
report-host=192.168.0.212
保存并退出vi操作
打开防火墙3306数据端口,或关闭防火墙
service iptables stop
2.4.3配置同步操作
分别在master和slave服务器上开启mysql服务
service mysql restart
2.4.3.1在master服务器上的一些操作
输入以下命令进入mysql命令行,并根据提示数据mysql root密码
mysql -uroot -p
应当进入如下的命令行界面
[root@mysql02 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>
检查GTID是否开启,输入如下命令
show global variables like ‘%gtid%’;
应当出现如下的结果
mysql> show global variables like ‘%gtid%’;
+————————–+——-+
| Variable_name          
 | Value |
+————————–+——-+
| enforce_gtid_consistency | ON    |        //这里应当为ON
| gtid_executed            |       |
| gtid_mode                | ON    |              //这里应当为ON
| gtid_owned               |       |
| gtid_purged              |       |
+————————–+——-+
5 rows in set (0.00 sec)
mysql>
添加同步账号,输入如下命令
其中sync为同步用的账号名,192.168.0.203为slave服务器IP地址,4006767909为同步账号密码,请根据需求做设置
grant replication slave on *.* to ‘sync’@’192.168.0.203’ identified by ‘4006767909’;
刷新权限
flush privileges;
操作结果应当如下显示
mysql> grant replication slave on *.* to ‘sync’@’192.168.0.203’ identified by ‘4006767909’;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
2.4.3.2在slave上的一些操作
输入以下命令进入mysql命令行,并根据提示数据mysql root密码
mysql -uroot -p
应当进入如下的命令行界面
[root@mysql02 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>
检查GTID是否开启,输入如下命令
show global variables like ‘%gtid%’;
应当出现如下的结果
mysql> show global variables like ‘%gtid%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| enforce_gtid_consistency | ON    |        //这里应当为ON
| gtid_executed            |       |
| gtid_mode                | ON    |              //这里应当为ON
| gtid_owned               |       |
| gtid_purged              |       |
+————————–+——-+
5 rows in set (0.00 sec)
mysql>
重置slave状态,输入如下命令
reset slave;
配置slave状态,输入如下命令,请一行一行完成
change master to
master_host=’192.168.0.202′,
master_user=’sync’,
master_password=’4006767909′,
master_port=3306,
master_auto_position = 1,
master_delay=30;
开启slave同步
start slave;
2.4.4查看同步以及进行验证
在master服务器上输入
show master status;
显示如下结果
mysql> show master status;
+——————+———-+————–+——————+——————————————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+——————+———-+————–+——————+——————————————+
| mysql-bin.000001 |      799 |              |                  | 66f234aa-6dc6-11e3-8eaf-000c296689c5:1-3 |
+——————+———-+————–+——————+——————————————+
1 row in set (0.00 sec)
绿色标记的信息应当留意并记录
在slave服务器输入如下命令
show slave statusG
应当显示如下信息
其中绿色信息应当与master服务器一致
红色信息应当为YES
mysql> show slave statusG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.202
                  Master_User: sync
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 799
               Relay_Log_File: mysql03-relay-bin.000002
                Relay_Log_Pos: 1009
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 799
              Relay_Log_Space: 1215
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID: 66f234aa-6dc6-11e3-8eaf-000c296689c5
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 30
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: 66f234aa-6dc6-11e3-8eaf-000c296689c5:1-3
            Executed_Gtid_Set: 66f234aa-6dc6-11e3-8eaf-000c296689c5:1-3
                Auto_Position: 1
1 row in set (0.00 sec)
2.4.5增加root远程权限
root账户可能还存在部分权限问题,例如不能增加新用户等,通过以下命令解决
在master服务器上运行
其中root为用户名,4006767909为密码,%表示为允许任何IP登陆
grant all privileges on *.* to root@’%’ identified by ‘4006767909’ with grant option;
并刷新权限
flush privileges;
显示结果如下
mysql> grant all privileges on *.* to root@’%’ identified by ‘4006767909’ with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
3.mysql-proxy安装和配置
mysql-proxy采用奇虎公司基于mysql-proxy开发的开源项目atlas
项目地址为https://github.com/Qihoo360/Atlas
altas在本例安装于192.169.0.201服务器上,所有安装文件保存在/root目录下
3.1 atlas安装和配置
输入以下命令以rpm方式安装
rpm –i Atlas-XX.el6.x86_64.rpm
稍等一会则安装成功
成功安装不会有任何返回结果
3.2atlas配置
3.2.1生成加密密钥
进入安装目录
cd /usr/local/mysql-proxy/bin/
运行./encrypt 4006767909
4006767909为2.4.5章节中root账号的密码
显示结果如下
[root@mysql01 bin]# ./encrypt 4006767909
./encrypt: /usr/lib64/libcrypto.so.10: no version information available (required by ./encrypt)
heYzAjQkI4uwQkxWBU0hPg==< /div>
记录heYzAjQkI4uwQkxWBU0hPg==这串字符,此字符将写入到mysql-proxy配置文件中
3.2.2 修改mysql-proxy配置文件
输入以下命令
vi /usr/local/mysql-proxy/conf/test.cnf
修改配置文件如下
#为注释行,可不填入配置文件中
[mysql-proxy]
#管理用户
admin-username = admin
#管理用户密码,注意,管理用户和密码不等于mysql用户和密码,仅用于mysql-proxy接口的管理操作
admin-password = 4006767909
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
#master服务器IP地址
proxy-backend-addresses = 192.168.0.202:3306
#slave服务器IP地址
proxy-read-only-backend-addresses = 192.168.0.203:3306@1
#填入3.2.1中生成的字符串
pwds = root:heYzAjQkI4uwQkxWBU0hPg==,root:heYzAjQkI4uwQkxWBU0hPg==
daemon = true
keepalive = true
event-threads = 4
log-level = message
log-path = /usr/local/mysql-proxy/log
#sql-log = OFF
instance = test
#mysql-proxy端口
proxy-address = 0.0.0.0:1234
#mysql-proxy管理端口
admin-address = 0.0.0.0:2345
#tables = person.mt.id.3
charset = utf8
#client-ips = 127.0.0.1, 192.168.1
#lvs-ips = 192.168.1.1
3.2.3启动mysql-proxy
进入安装目录
cd /usr/local/mysql-proxy/bin/
运行
./mysql-proxyd test start
成功则显示为
[root@mysql01 bin]# ./mysql-proxyd test start
OK: MySQL-Proxy of test is started
3.3检查atlas状态
从任意安装mysql client 的机器进行连接,在本例中可以使用已经配置好的master或者slave服务器
输入一下命令
其中192.168.0.201是mysql-proxy 服务器地址
admin为3.2.2章节中配置的管理用户名
2345为3.2.2章节中配置的管理端口
mysql -h192.168.0.201 -P2345 -uadmin -p
输入3.2.2章节中配置的管理用户密码进入如下界面
[root@mysql03 ~]# mysql -h192.168.0.201 -P2345 -uadmin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.99-agent-admin
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
输入命令
SELECT * FROM backends;
显示如下, state应当均为UP,则表示连接成功
mysql> SELECT * FROM backends;
+———–+——————+—–+—-+—-+—————–+
| backend_ndx | address            | state | type | uuid | connected_clients |
+———–+——————+—–+—-+—-+—————–+
|           1 | 192.168.0.202:3306 | up    | rw   | NULL |                 0 |
|           2 | 192.168.0.203:3306 | up    | ro   | NULL |                 0 |
+———–+——————+—–+—-+—-+—————–+
2 rows in set (0.00 sec)
使用HedidSQL进行数据测试
Mysql 主从和proxy安装配置 Mysql 主从和代理.docx (38.27 KB, 下载次数: 0)

2014-5-8 21:22 上传

点击文件名下载附件

发表评论

电子邮件地址不会被公开。 必填项已用*标注