一、初始化準備,四臺設備mysql
master:192.168.2.6 slave:192.168.2.16 proxysql:192.168.2.26 Client:192.168.2.100,用於測試
二、搭建好主從服務器sql
master:主 [root@master ~]# yum -y install mariadb-server [root@master ~]# vim /etc/my.cnf [mysqld] server_id=6 binlog_format=row log_bin skip_name_resolve [root@master ~]# systemctl start mariadb MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.2.%' identified by '123456'; #建立複製帳號 slave:從 [root@slave ~]# yum -y install mariadb-server [root@slave ~]# vim /etc/my.cnf [mysqld] read-only server_id=16 skip_name_resolve binlog_format=row [root@slave ~]# systemctl start mariadb MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.2.6', -> MASTER_USER='repluser', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.02 sec) MariaDB [(none)]> start slave; MariaDB [(none)]> show slave status\G
三、測試主從同步是否正常數據庫
master: MariaDB [(none)]> create database db1; slave: MariaDB [(none)]> show databases;
四、搭建proxysql yum倉庫vim
proxysql: [root@proxysql ~]# cat <<EOF | tee /etc/yum.repos.d/proxysql.repo > [proxysql_repo] > name= ProxySQL YUM repository > baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever > gpgcheck=1 > gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key > EOF
五、安裝proxysql和mariadb客戶端工具centos
proxysql: 6032管理端口、 6033鏈接端口 [root@proxysql ~]# yum -y install proxysql mariadb [root@proxysql ~]# rpm -ql proxysql [root@proxysql ~]# service proxysql start #老的啓動方法 [root@proxysql ~]# ll /var/lib/proxysql/ #proxysql簡化版的關係型數據庫,用來存放proxysql配置
六、鏈接proxysql,在main. mysql_servers 加入主從服務器記錄bash
proxysql: [root@proxysql ~]# mysql -uadmin -padmin -P6032 -h127.0.0.1 #帳號密碼默認admin MySQL [(none)]> insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.2.6',3306); #組id,ip,端口 MySQL [(none)]> insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.2.16',3306); MySQL [(none)]> select * from mysql_servers; #查看添加的記錄信息
七、主從服務器添加管理帳戶供proxysql機器來管理服務器
master: MariaDB [(none)]> grant replication client on *.* to monitor@'192.168.2.%' identified by '123456'; #主從複製已經創建,只要在主服務器添加便可
八、設置使用monitor用戶鏈接主從服務器 #main.global_variables表app
proxysql: MySQL [(none)]> set mysql-monitor_username='monitor'; MySQL [(none)]> set mysql-monitor_password='123456'; MySQL [(none)]> load mysql variables to runtime; #加載生效 MySQL [(none)]> save mysql variables to disk; #保存到磁盤
九、設置分組信息 #須要修改的是main庫中的mysql_replication_hostgroups表ide
proxysql: MySQL [(none)]> insert into mysql_replication_hostgroups values(10,20,"test"); #10組負責寫,20負責讀 MySQL [(none)]> select * from mysql_replication_hostgroups; #查看添加的記錄 MySQL [(none)]> load mysql servers to runtime; #加載生效 MySQL [(none)]> save mysql servers to disk; #保存到磁盤 MySQL [(none)]> select * from mysql_servers; #再次查看記錄,proxysql已經區分讀寫id了
十、在master節點建立訪問用戶,用於主從服務器去訪問中間件proxysql #主從複製已經創建,只要在主服務器添加便可工具
master: MariaDB [(none)]> grant all on *.* to sqluser@'192.168.2.%' identified by '123456';
十一、將建立訪問調度器proxysql的客戶端用戶sqluser加入proxysql服務器的
mysql_users表中 proxysql: MySQL [(none)]> insert into mysql_users(username,password,default_hostgroup) values('sqluser','123456',10); #default_hostgroup默認 組設置爲寫組10, MySQL [(none)]> load mysql users to runtime; #生效 MySQL [(none)]> save mysql users to disk; #存盤
十二、使用客戶端測試
Client: [root@centos6 ~]# mysql -usqluser -p123456 -h192.168.2.26 -P6033 -e 'select @@server_id';
1三、設置調度規則
proxysql: MySQL [(none)]> insert into mysql_query_rules -> (rule_id,active,match_digest,destination_hostgroup,apply)VALUES -> (1,1,'^SELECT.*FOR UPDATE$',10,1),(2,1,'^SELECT',20,1); Query OK, 2 rows affected (0.00 sec) #讀調度到20組,寫調度到10組 MySQL [(none)]> load mysql query rules to runtime; #生效 MySQL [(none)]> save mysql query rules to disk; #保存
1四、客戶端測試
Client: [root@centos6 ~]# mysql -usqluser -p123456 -h192.168.2.26 -P6033 -e 'select @@server_id';