CentOS上SQLAdmin集群部署方案
setenforce 0)或设置为permissive模式,开放必要的端口(如MySQL默认3306、SQLAdmin Web端口80/443、集群通信端口)。sudo yum update -y);安装必要依赖(sudo yum install -y wget tar make gcc mysql-devel php php-mysqlnd)。sudo yum install epel-release -y),通过YUM安装SQLAdmin(sudo yum install sqladmin -y)。sqladmin-x.x.x.tar.gz),解压至/usr/local/目录,安装依赖(sudo yum groupinstall "Development Tools" -y),执行./configure --with-mysql=/usr/bin/mysql_config --with-web=/var/www/html/sqladmin,编译安装(make && sudo make install)。/etc/sqladmin/sqladmin.conf或/usr/local/sqladmin/config.inc.php),设置数据库连接信息(主机名、端口、用户名、密码)、集群节点列表(后续集群配置需用到)、管理员账户及权限。DocumentRoot指向SQLAdmin目录,开启AllowOverride All)。重启Web服务(sudo systemctl restart nginx/apache2)。/etc/sqladmin/cluster.conf),定义集群节点信息(IP地址、端口、角色)。示例如下:[cluster]
nodes = node1_ip:3306,node2_ip:3306,node3_ip:3306
mode = multi_master # 多主复制模式(适用于高并发写场景)或 master_slave # 主从复制模式(适用于读多写少场景)
sync_strategy = async # 异步同步(高性能,可能丢数据)或 semi_sync # 半同步同步(平衡性能与一致性)
/etc/my.cnf),添加:[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name # 需同步的数据库
重启MySQL(sudo systemctl restart mysqld),创建复制用户(CREATE USER 'repl'@'%' IDENTIFIED BY 'strong_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;),获取主节点二进制日志位置(SHOW MASTER STATUS;,记录File和Position)。[mysqld]
server-id = 2 # 每个节点唯一
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
read_only = 1 # 从节点设为只读(防止误操作)
重启MySQL,在从节点上配置复制(CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='recorded_File', MASTER_LOG_POS=recorded_position; START SLAVE;)。server-id唯一),开启二进制日志,配置互为主从复制(在每个节点上执行CHANGE MASTER TO指向其他节点)。需注意冲突解决(如应用层加锁或使用auto_increment_increment和auto_increment_offset避免主键冲突)。upstream sqladmin_cluster {
server node1_ip:8080;
server node2_ip:8080;
server node3_ip:8080;
# 负载均衡算法:轮询(默认)、权重(weight)、IP哈希(ip_hash)
least_conn; # 最少连接算法(适用于长连接场景)
}
server {
listen 80;
server_name sqladmin.yourdomain.com;
location / {
proxy_pass http://sqladmin_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启Nginx(sudo systemctl restart nginx)。sudo systemctl start sqladmin),设置开机自启动(sudo systemctl enable sqladmin)。sqladmin cluster status)查看集群节点状态(是否全部在线、同步状态)。mysqldump或Percona XtraBackup定期备份数据库(备份文件存储在异地或云存储),每周进行恢复测试(验证备份文件的完整性和恢复流程的有效性)。/var/log/sqladmin/error.log、/var/log/mysql/error.log),修复问题后重启服务;SHOW SLAVE STATUS\G或SHOW STATUS LIKE 'wsrep_%'),修复冲突后重新启动复制。