Centos 7 Üzerinde ProxySQL Kurulumu ve DB Yük Dengeleme

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
Back To Top