本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
描述:
httpd+php
动态站点
proxy SQL
实现mariadb
主从数据库读写分离
服务器介绍:
1
台proxy SQL
服务器:192.168.239.140
1
台web
服务器:192.168.239.143
主
数据库服务器:192.168.239.149
从
数据库服务器:192.168.239.150
在web
服务器上操作如下:
在码云上将网站文件下载至指定位置,并修改文件目录属主属组
chown -R apache:apache upload/
安装相应程序包
yum install -y httpd php php-mysql
编辑httpd配置文件
vim /etc/httpd/conf/httpd.conf #修改以下配置项即可
找到DocumentRoot "/var/www/html/upload" #修改为指向你的网站文件目录
启动httpd服务
systemctl start httpd
在proxy SQL
服务器上操作如下:
添加proxysql
官方yum
源
vim /etc/yum.repo.d/proxysql.repo
配置项如下:
[proxysql_repo]
name= ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever
gpgcheck=1 gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key
安装proxysql
yum install -y proxysql
编辑配置文件
vim /etc/proxysql.cnf
配置如下参考
admin_variables=
{
admin_credentials="admin:admin"
# mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock"
mysql_ifaces="0.0.0.0:6033"
# refresh_interval=2000
# debug=true
}
mysql_variables=
{
threads=4
max_connections=2048
default_query_delay=0
default_query_timeout=36000000
have_compress=true
poll_timeout=2000
# interfaces="0.0.0.0:6033;/tmp/proxysql.sock"
interfaces="0.0.0.0:3306"
default_schema="information_schema"
stacksize=1048576
server_version="5.5.30"
connect_timeout_server=3000
monitor_username="monitor"
monitor_password="monitor"
monitor_history=600000
monitor_connect_interval=60000
monitor_ping_interval=10000
monitor_read_only_interval=1500
monitor_read_only_timeout=500
ping_interval_server_msec=120000
ping_timeout_server=500
commands_stats=true
sessions_sort=true
connect_retries_on_failure=10
}
mysql_servers =
(
{ address="192.168.239.149" , port=3306 , hostgroup=0, max_connections=5 },
{ address="192.168.239.150" , port=3306 , hostgroup=1, max_connections=5 },
)
mysql_users:
(
{
username = "sanxi"
password = "sanxi666"
default_hostgroup = 0
max_connections=1000
default_schema="test"
active = 1
}
)
mysql_query_rules:
(
{
rule_id=1
active=1
match_pattern="^SELECT .* FOR UPDATE$"
destination_hostgroup=0
pply=1
},
{
rule_id=2
active=1
match_pattern="^SELECT"
destination_hostgroup=1
apply=1
}
)
mysql_replication_hostgroups=
(
{
writer_hostgroup=0
reader_hostgroup=1
comment="test repl 1"
}
)
等待在数据库主节点授权账号后才能启动服务
数据库操作如下:
在主服务器操作
安装mariadb
yum install -y mariadb
编辑配置文件
vim /etc/my.cnf
如下参考:
server_id=1
log_bin=log-bin
skip_name_resolve=ON
启动服务
systemctl restart mariadb
连接至mariadb
操作以下:
-
给
proxy SQL
监控账号授权访问
MariaDB [(none)]> GRANT USAGE,REPLICATION CLIENT ON *.* TO 'monitor'@'192.168.239.%' IDENTIFIED BY 'monitor';
-
给
discuz
和从节点账号授权
MariaDB [(none)]> GRANT ALL ON *.* TO 'sanxi'@'192.168.239.%' IDENTIFIED BY 'sanxi666';
-
刷新权限以生效:
MariaDB [(none)]> FLUSH PRIVILEGES;
-
查看主节点日志文件当前所处位置:一会在从节点上用到
MariaDB [(none)]> SHOW MASTER STATUS;
+----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| log-bin.000007 | 2941070 | | |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)
从服务器操作:
安装mariadb
yum install -y mariadb
编辑配置文件
vim /etc/my.cnf
如下参考:
server_id=2
relay_log=relay-log
skip_name_resolve=ON
read_only=ON
启动服务
systemctl restart mariadb
在从节点上配置主节点:
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.239.149',MASTER_USER='sanxi',MASTER_PASSWORD='sanxi666',MASTER_LOG_FILE='log-bin.000007',MASTER_LOG_POS=2941070;
启动复制:
mysql> START SLAVE
####在proxy SQL服务器上启动服务:
systemctl start proxysql
然后浏览器输入 web地址/install,根据提示一步一步操作即可