Veritabanı sunucuları önüne ProxySQL yardımıyla yük dengeleme yapabilirsiniz. Kısaca ProxySQL kurulumu ve yapılandırmasını anlatacağım.
Öncelikle ProxySQL kurulumunu yapalım. Github linkinden güncel versiyonu çektiğinizden emin olunuz.
# yum install mariadb -y # yum install -y https://github.com/sysown/proxysql/releases/download/v2.0.11/proxysql-2.0.11-1-centos7.x86_64.rpm # systemctl start proxysql # systemctl enable proxysql
MySQL’e admin yetkisi ile bağlanalım. Yönetimi bu kullanıcı üzerinden sağlayacağız.
# mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='ProxySQL> '
Admin kullanıcısının parolasını güvenliğimiz için değiştirelim.
ProxySQL> UPDATE global_variables SET variable_value='admin:new_password' WHERE variable_name='admin-admin_credentials'; ProxySQL> LOAD ADMIN VARIABLES TO RUNTIME; ProxySQL> SAVE ADMIN VARIABLES TO DISK;
Veritabanı node’ larını ProxySQL’ tanımlayalım.
ProxySQL> INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'192.160.1.151',3306); ProxySQL> INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'192.160.1.152',3306); ProxySQL> INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (1,'192.160.1.153',3306);
Bağlı düğümlerin durumunu kontrol edelim.
ProxySQL> SELECT hostgroup_id,hostname,port,status FROM mysql_servers;
ProxySQL’in veritabanı node’ larını takip edebilmesi için her sunucuda “monitor” kullanıcısı oluşturalım.
mysql> CREATE USER 'monitor'@'%' IDENTIFIED BY 'password'; mysql> GRANT SELECT ON sys.* TO 'monitor'@'%'; mysql> FLUSH PRIVILEGES;
Bu kullanıcıyı ProxySQL için tanımlamasını yapalım.
ProxySQL> UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username'; ProxySQL> UPDATE global_variables SET variable_value='password' WHERE variable_name='mysql-monitor_password'; ProxySQL> UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval'); ProxySQL> LOAD MYSQL VARIABLES TO RUNTIME; ProxySQL> LOAD MYSQL SERVERS TO RUNTIME; ProxySQL> SAVE MYSQL VARIABLES TO DISK; ProxySQL> SAVE MYSQL SERVERS TO DISK; ProxySQL> SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 10;
Veritabanı sunucularında kullanılacak kullanıcıları ProxySQL’ e tanımamız gerekir. Veritabanı sunucularında MariaDB için oluşturduğunuz kullanıcı için ayrıca ProxySQL’ dede kullanıcı oluşturalım.
ProxySQL> INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('testuser','user_password',1); ProxySQL> LOAD MYSQL USERS TO RUNTIME; ProxySQL> SAVE MYSQL USERS TO DISK;
Oluşturduğumuz kullanıcıya erişimi aşağıdaki şekilde test edebiliriz.
# mysql -u testuser -p -h 127.0.0.1 -P6033