Подключиться к кластеру MySQL sync
К кластеру облачных баз данных MySQL sync можно подключиться по DNS-адресу или IP-адресу.
Если кластер подключен к приватной подсети и вы хотите работать с ним через DNS, подключите к подсети кластера облачный роутер с доступом во внешнюю сеть .
Мы рекомендуем подключаться к кластеру с помощью DNS-адресов --- они ведут на актуальные IP-адреса мастер-ноды и реплик. Если в случае недоступности мастер-ноды одна из реплик возьмет на себя его роль, IP-адрес мастер-ноды изменится, и подключение по IP-адресу перестанет работать.
Порты
Для подключения к ProxySQL используйте порт 6033.
ProxySQL автоматически распределяет запросы между нодами кластера.
Способы подключения
через терминальный клиент mysql;
через графические инструменты для управления базами данных: phpMyAdmin , MySQL Workbench, Sequel Pro и другие;
из программного кода. Можно использовать адрес балансировщика нагрузки, подключенного к нодам кластера, выбрать ноду в коде приложения или использовать драйвер, поддерживающий подключение к нескольким хостам.
Для всех способов доступно подключение с SSL-сертификатом.
Посмотреть адрес для подключения
В панели управления перейдите в раздел Облачная платформа ⟶ Базы данных .
Откройте страницу кластера баз данных ⟶ вкладка Настройки .
В блоке Адреса и статусы нод посмотрите DNS-адрес или IP-адрес.
Количество подключений
Количество подключений для кластера MySQL sync определяется количеством RAM для нод кластера баз данных. На каждый 1 ГБ RAM доступно 50 подключений. Например, для кластера с 4 ГБ RAM доступно 200 подключений, для 6 ГБ RAM — 300 подключений.
Чтобы увеличить количество подключений, масштабируйте кластер до нужного количества RAM.
Подключиться с SSL
Подключение по SSL обеспечивает шифрование данных между вашим сервером и кластером баз данных.
Linux
Windows
Python
PHP
Go
Node.js
Скачайте CA-сертификат и поместите его в папку ~/.mysql/
:
mkdir -p ~/.mysql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Подключитесь к кластеру:
mysql --host= <host> \
--port= 6033 \
--user= <user_name> \
--password \
--database= <database_name> \
--ssl-ca= ~/.mysql/root.crt \
--ssl-mode= verify_ca
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<database_name>
— имя базы данных.
Нажмите Скачать сертификат для скачивания CA-сертификата и поместите его в папку ~/.mysql/
Подключитесь к кластеру:
mysql --host= <host> \
--port= 6033 \
--user= <user_name> \
--password \
--database= <database_name> \
--ssl-ca= %APPDATA%\m ysql\C A.pem\ \
--ssl-mode= verify_ca
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<database_name>
— имя базы данных.
Скачайте CA-сертификат и поместите его в папку ~/.mysql/
:
mkdir ~/.mysql
wget "https://storage.dbaas.selcloud.ru/CA.pem" -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Установите библиотеку PyMySQL:
Используйте пример подключения:
import pymysql.cursors
connection = pymysql . connect ( host = '<host>' ,
user = '<user_name>' ,
password = '<password>' ,
database = '<database_name>' ,
ssl_ca = '<full_path_to_ca_certificate>' ,
ssl_verify_cert = True ,
port = 6033 ,
cursorclass = pymysql . cursors . DictCursor )
with connection :
with connection . cursor () as cursor :
cursor . execute ( "SELECT 40 + 2 AS sum" )
result = cursor . fetchone ()
print ( result )
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<database_name>
— имя базы данных;
<full_path_to_ca_certificate>
— полный путь до CA-сертификата.
Скачайте CA-сертификат и поместите его в папку ~/.mysql/
:
mkdir -p ~/.mysql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Установите библиотеку mysqli:
Используйте пример подключения:
<? php
$mysqli = mysqli_init ();
if ( ! $mysqli )
{
die ( "mysqli_init failed" );
}
$mysqli -> options ( MYSQLI_OPT_SSL_VERIFY_SERVER_CERT , true );
$mysqli -> ssl_set ( NULL , NULL , "<full_path_to_ca_certificate>" , NULL , NULL );
if ( ! $mysqli -> real_connect ( "<host>" , "<user_name>" , "<password>" , "<database_name>" , 6033 ))
{
die ( "Connect Error: " . mysqli_connect_error ());
}
$result = $mysqli -> query ( "SELECT 40 + 2" );
$row = $result -> fetch_row ();
echo "Result: $row[0] " ;
$result -> close ();
$mysqli -> close ();
?>
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<database_name>
— имя базы данных;
<full_path_to_ca_certificate>
— полный путь до CA-сертификата.
Скачайте CA-сертификат и поместите его в папку ~/.mysql/
:
mkdir ~/.mysql
wget "https://storage.dbaas.selcloud.ru/CA.pem" -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Используйте пример подключения:
package main
import (
"crypto/tls"
"crypto/x509"
"database/sql"
"fmt"
"github.com/go-sql-driver/mysql"
"io/ioutil"
)
func main () {
rootCertPool := x509 . NewCertPool ()
pem , err := ioutil . ReadFile ( "<full_path_to_ca_certificate>" )
if err != nil {
panic ( err )
}
if ok := rootCertPool . AppendCertsFromPEM ( pem ); ! ok {
panic ( "Failed to append PEM." )
}
mysql . RegisterTLSConfig ( "custom" , & tls . Config {
RootCAs : rootCertPool ,
})
connectionString := fmt . Sprintf ( "%s:%s@tcp(%s:6033)/%s?tls=custom" ,
"<user_name>" ,
"<password>" ,
"<host>" ,
"<database_name>" ,
)
db , err := sql . Open ( "mysql" , connectionString )
if err != nil {
panic ( err )
}
defer db . Close ()
var sum int64
err = db . QueryRow ( "SELECT 40+2" ). Scan ( & sum )
if err != nil {
panic ( err )
}
fmt . Println ( sum )
}
Укажите:
<full_path_to_ca_certificate>
— полный путь до CA-сертификата;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<host>
— DNS- или IP-адрес ноды;
<database_name>
— имя базы данных.
Скачайте CA-сертификат и поместите его в папку ~/.mysql/
:
mkdir ~/.mysql
wget "https://storage.dbaas.selcloud.ru/CA.pem" -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Установите библиотеку mysql2:
Используйте пример подключения:
const fs = require ( 'fs' );
const mysql = require ( 'mysql2' );
const config = {
host : '<host>' ,
port : 6033 ,
database : '<database_name>' ,
user : '<user_name>' ,
password : '<password>' ,
ssl : {
rejectUnauthorized : true ,
ca : fs . readFileSync ( '<full_path_to_ca_certificate>' ). toString (),
},
};
const connection = mysql . createConnection ( config );
connection . query ( 'SELECT 40 + 2 AS sum' , ( error , res ) => {
if ( error ) throw error ;
console . log ( res );
connection . end ();
});
Укажите:
<host>
— DNS- или IP-адрес ноды;
<database_name>
— имя базы данных;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<full_path_to_ca_certificate>
— полный путь до CA-сертификата.
Подключиться без SSL
Linux
Windows
Python
PHP
Go
Node.js
Подключитесь к кластеру:
mysql --host= <host> \
--port= 6033 \
--user= <user_name> \
--password \
--database= <database_name> \
--ssl-mode= disabled
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<database_name>
— имя базы данных.
Подключитесь к кластеру:
mysql --host= <host> \
--port= 6033 \
--user= <user_name> \
--password \
--database= <database_name> \
--ssl-mode= disabled
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<database_name>
— имя базы данных.
Установите библиотеку PyMySQL:
Используйте пример подключения:
import pymysql.cursors
connection = pymysql . connect ( host = '<host>' ,
user = '<user_name>' ,
password = '<password>' ,
database = '<database_name>' ,
port = 6033 ,
cursorclass = pymysql . cursors . DictCursor )
with connection :
with connection . cursor () as cursor :
cursor . execute ( "SELECT 40 + 2 AS sum" )
result = cursor . fetchone ()
print ( result )
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<database_name>
— имя базы данных.
Установите библиотеку mysqli:
Используйте пример подключения:
<? php
$conn = new mysqli ( "<host>:6033" , "<user_name>" , "<password>" , "<database_name>" );
if ( $conn -> connect_error )
{
die ( "ERROR: Unable to connect: " . $conn -> connect_error );
}
$result = $conn -> query ( "SELECT 40 + 2" );
$row = $result -> fetch_row ();
echo "Result: $row[0] " ;
$result -> close ();
$conn -> close ();
?>
Укажите:
<host>
— DNS- или IP-адрес ноды;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<database_name>
— имя базы данных.
Используйте пример подключения:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main () {
connectionString := fmt . Sprintf ( "%s:%s@tcp(%s:6033)/%s" ,
"<user_name>" ,
"<password>" ,
"<host>" ,
"<database_name>" ,
)
db , err := sql . Open ( "mysql" , connectionString )
if err != nil {
panic ( err . Error ())
}
defer db . Close ()
var sum int64
err = db . QueryRow ( "SELECT 40+2" ). Scan ( & sum )
if err != nil {
panic ( err . Error ())
}
fmt . Println ( sum )
}
Укажите:
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя;
<host>
— DNS- или IP-адрес ноды;
<database_name>
— имя базы данных.
Установите библиотеку mysql2:
Используйте пример подключения:
const mysql = require ( 'mysql2' );
const config = {
host : '<host>' ,
port : 6033 ,
database : '<database_name>' ,
user : '<user_name>' ,
password : '<password>' ,
};
const connection = mysql . createConnection ( config );
connection . query ( 'SELECT 40 + 2 AS sum' , ( error , res ) => {
if ( error ) throw error ;
console . log ( res );
connection . end ();
});
Укажите:
<host>
— DNS- или IP-адрес ноды;
<database_name>
— имя базы данных;
<user_name>
— имя пользователя базы данных;
<password>
— пароль пользователя.
Подключиться через phpMyAdmin
Добавьте в конфигурационный файл /etc/phpmyadmin/config.inc.php
строки:
$cfg [ 'Servers' ][ $i ][ 'auth_type' ] = 'cookie' ;
$cfg [ 'Servers' ][ $i ][ 'host' ] = '<host>' ;
$cfg [ 'Servers' ][ $i ][ 'connect_type' ] = 'tcp' ;
$cfg [ 'Servers' ][ $i ][ 'port' ] = '6033' ;
$cfg [ 'Servers' ][ $i ][ 'compress' ] = false ;
$cfg [ 'Servers' ][ $i ][ 'extension' ] = 'mysqli' ;
$cfg [ 'Servers' ][ $i ][ 'AllowNoPassword' ] = false ;
Укажите <host>
— DNS- или IP-адрес ноды.