Подключиться к кластеру MySQL sync
К кластеру MySQL sync можно подключиться:
через консольный клиент mysql;
графические инструменты для управления базами данных: phpMyAdmin , MySQL Workbench, Sequel Pro и другие;
программный код.
Для всех способов доступно подключение с SSL и без SSL .
При подключении укажите порт и адрес .
Количество подключений для кластера ограничено количеством RAM.
Порты для подключения
Для подключения к ProxySQL используйте порт 6033.
ProxySQL автоматически распределяет запросы между нодами кластера.
Адреса для подключения
Адрес для подключения зависит от подсети кластера и от того, откуда вы подключаетесь.
Вы можете выбрать адрес в зависимости от одного из сценариев:
Подключение к кластеру в публичной подсети
Если кластер в публичной подсети, к нодам можно подключиться по DNS-адресу или IP-адресу из публичной подсети.
Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде.
При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
При подключении по IP-адресу из публичной подсети механизм master discovery не используется.
Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.
Вы можете посмотреть адрес для подключения в панели управления.
Подключение из приватной подсети к кластеру в приватной подсети
Если вы подключаетесь из приватной подсети к кластеру в приватной подсети, можно использовать DNS-адрес или приватный IP-адрес.
Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде.
При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
При подключении по приватному IP-адресу механизм master discovery не используется.
Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.
Чтобы подключиться из другой приватной подсети, сначала подключите обе приватные подсети к облачному роутеру .
Вы можете посмотреть адрес для подключения в панели управления.
Подключение из интернета к кластеру в приватной подсети
Если вы подключаетесь к кластеру в приватной подсети из интернета, можно использовать только публичный IP-адрес (Floating IP).
Приватная подсеть должна соответствовать требованиям .
Если подсеть не соответствует требованиям, подготовьте ее для подключения публичного IP-адреса (Floating IP).
Для публичных IP-адресов (Floating IPs) используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде.
При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
Вы можете посмотреть адрес для подключения в панели управления.
Посмотреть адрес для подключения
В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных .
Откройте вкладку Активные .
Откройте страницу кластера баз данных → вкладка Подключение .
В блоке Адреса для подключения посмотрите адрес.
Количество подключений
Количество подключений для кластера MySQL sync определяется количеством RAM для нод кластера баз данных. На каждый 1 ГБ RAM доступно 50 подключений. Например, для кластера с 4 ГБ RAM доступно 200 подключений, для 6 ГБ RAM — 300 подключений.
Чтобы увеличить количество подключений, масштабируйте кластер до нужного количества RAM.
Подключиться с SSL
Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.
Bash
PowerShell
Python
PHP
Go
Node.js
Скачайте корневой сертификат и поместите его в папку ~/.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 = < port > \
--user = < database_user_name > \
--password \
--database = < database_name > \
--ssl-ca =~ /.mysql/root.crt \
--ssl-mode = verify_ca
Укажите:
В панели управления нажмите Скачать сертификат для скачивания корневого сертификата и поместите его в папку %APPDATA%\mysql\.
Подключитесь к кластеру:
mysql --host = < host > `
--port = < port > `
--user = < database_user_name > `
--password `
--database = < database_name > `
--ssl-ca = %APPDATA% \ mysql \ CA.pem \ `
--ssl-mode = verify_ca
Укажите:
Скачайте корневой сертификат и поместите его в папку ~/.mysql/:
mkdir -p ~/.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 = '<database_user_name>' ,
password = '<password>' ,
database = '<database_name>' ,
ssl_ca = '<path>' ,
ssl_verify_cert = True ,
port = < port > ,
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-адрес (Floating IP) ноды;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<database_name> — имя базы данных;
<path> — полный путь до корневого сертификата;
<port> — порт для подключения .
Скачайте корневой сертификат и поместите его в папку ~/.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 , "<path>" , NULL , NULL ) ;
if (
! $mysqli -> real_connect (
"master.77c6916d-8f64-45d0-81fb-a5343bb2ff1c.c.dbaas.selcloud.ru" ,
"<database_user_name>" ,
"<password>" ,
"<database_name>" ,
< port >
)
) {
die ( "Connect Error: " . mysqli_connect_error ( ) ) ;
}
$result = $mysqli -> query ( "SELECT 40 + 2" ) ;
$row = $result -> fetch_row ( ) ;
echo "Result: $row [ 0 ] " ;
$result -> close ( ) ;
$mysqli -> close ( ) ;
?>
Укажите:
<path> — полный путь до корневого сертификата;
<host> — DNS-адрес или публичный IP-адрес (Floating IP) ноды;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<database_name> — имя базы данных;
<port> — порт для подключения .
Скачайте корневой сертификат и поместите его в папку ~/.mysql/:
mkdir -p ~/.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 ( "<path>" )
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:<port>)/%s?tls=custom" ,
"<database_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 )
}
Укажите:
<path> — полный путь до корневого сертификата;
<port> — порт для подключения ;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<host> — DNS-адрес или публичный IP-адрес (Floating IP) ноды;
<database_name> — имя базы данных.
Скачайте корневой сертификат и поместите его в папку ~/.mysql/:
mkdir -p ~/.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 : < port > ,
database : '<database_name>' ,
user : '<database_user_name>' ,
password : '<password>' ,
ssl : {
rejectUnauthorized : true ,
ca : fs . readFileSync ( '<path>' ) . 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-адрес (Floating IP) ноды;
<port> — порт для подключения ;
<database_name> — имя базы данных;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<path> — полный путь до корневого сертификата.
Подключиться без SSL
Bash
PowerShell
Python
PHP
Go
Node.js
Откройте CLI.
Подключитесь к кластеру:
mysql --host = < host > \
--port = < port > \
--user = < database_user_name > \
--password \
--database = < database_name > \
Укажите:
Откройте CLI.
Подключитесь к кластеру:
mysql --host = < host > `
--port = < port > `
--user = < database_user_name > `
--password `
--database = < database_name >
Укажите:
Установите библиотеку PyMySQL:
Используйте пример подключения:
import pymysql . cursors
connection = pymysql . connect (
host = '<host>' ,
user = '<database_user_name>' ,
password = '<password>' ,
database = '<database_name>' ,
port = < port > ,
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-адрес (Floating IP) ноды;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<database_name> — имя базы данных;
<port> — порт для подключения .
Установите библиотеку mysqli:
Используйте пример подключения:
<?php
$conn = new mysqli (
"<host>:<port>" ,
"<database_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-адрес (Floating IP) ноды;
<port> — порт для подключения ;
<database_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:<port>)/%s" ,
"<database_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 )
}
Укажите:
<port> — порт для подключения ;
<database_user_name> — имя пользователя базы данных;
<password> — пароль пользователя;
<host> — DNS-адрес или публичный IP-адрес (Floating IP) ноды;
<database_name> — имя базы данных.
Установите библиотеку mysql2:
Используйте пример подключения:
const mysql = require ( 'mysql2' ) ;
const config = {
host : '<host>' ,
port : < port > ,
database : '<database_name>' ,
user : '<database_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-адрес (Floating IP) ноды;
<port> — порт для подключения ;
<database_name> — имя базы данных;
<database_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' ] = '<port>' ;
$cfg [ 'Servers' ] [ $i ] [ 'compress' ] = false ;
$cfg [ 'Servers' ] [ $i ] [ 'extension' ] = 'mysqli' ;
$cfg [ 'Servers' ] [ $i ] [ 'AllowNoPassword' ] = false ;
Укажите: