Подключиться к кластеру MySQL sync
К кластеру облачных баз данных MySQL sync можно подключиться по DNS-адресу, приватному IP-адресу и публичному IP-адресу.
Мы рекомендуем подключаться по DNS-адресу, потому что DNS-адреса соответствуют ролям нод и ведут на актуальные IP-адреса мастера и реплик. IP-адреса соответствуют конкретным нодам. В случае недоступности мастера одна из реплик возьмет на себя его роль, IP-адрес мастера изменится, и подключение по IP перестанет работать.
Если кластер подключен к приватной подсети и вы хотите работать с ним через DNS, подключите подсеть кластера к облачному роутеру с доступом к внешней сети. Используйте инструкцию Настроить доступ в интернет через облачный роутер.
Если кластер подключен к приватной сети и вам нужно настроить доступ к ноде из интернета, п одключите публичный IP-адрес.
Порты
Для подключения к ProxySQL используйте порт 6033.
ProxySQL автоматически распределяет запросы между нодами кластера.
Способы подключения
- через терминальный клиент mysql;
- через графические инструменты для управления базами данных: phpMyAdmin, MySQL Workbench, Sequel Pro и другие;
- из программного кода с SSL и без SSL.
Для всех способов доступно подключение с SSL-сертификатом.
Посмотреть адрес для подключения
- В панели управления перейдите в раздел Облачная платформа → Базы данных.
- Откройте страницу кластера баз данных → вкладка Подключение.
- В блоке Адреса для подключения посмотрите адрес.
Количество подключений
Количество подключений для кластера 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.servercore.com/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt -
Подключитесь к кластеру:
mysql --host=<host> \
--port=6033 \
--user=<database_user_name> \
--password \
--database=<database_name> \
--ssl-ca=~/.mysql/root.crt \
--ssl-mode=verify_caУкажите:
<host>
— DNS-адрес ноды;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
В панели управления нажмите Скачать сертификат для скачивания корневого сертификата и поместите его в папку
~/.mysql/
-
Подключитесь к кластеру:
mysql --host=<host> \
--port=6033 \
--user=<database_user_name> \
--password \
--database=<database_name> \
--ssl-ca=%APPDATA%\mysql\CA.pem\ \
--ssl-mode=verify_caУкажите:
<host>
— DNS-адрес ноды;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
Скачайте корневой сертификат и поместите его в папку
~/.mysql/
:mkdir -p ~/.mysql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt -
Установите библиотеку PyMySQL:
pip3 install PyMySQL
-
Используйте пример подключения:
import pymysql.cursors
connection = pymysql.connect(host='<host>',
user='<database_user_name>',
password='<password>',
database='<database_name>',
ssl_ca='<full_path_to_root_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-адрес ноды;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<database_name>
— имя базы данных;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
-
Скачайте корневой сертификат и поместите его в папку
~/.mysql/
:mkdir -p ~/.mysql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt -
Установите библиотеку mysqli:
apt install php-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_root_certificate>", NULL, NULL);
if (!$mysqli->real_connect("<host>", "<database_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-адрес ноды;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<database_name>
— имя базы данных;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
-
Скачайте корневой сертификат и поместите его в папку
~/.mysql/
:mkdir -p ~/.mysql/
wget https://storage.dbaas.servercore.com/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_root_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",
"<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)
}Укажите:
<full_path_to_root_certificate>
— полный путь до корневого сертификата;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<host>
— DNS-адрес ноды;<database_name>
— имя базы данных.
-
Скачайте корневой сертификат и поместите его в папку
~/.mysql/
:mkdir -p ~/.mysql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt -
Установите библиотеку mysql2:
npm install mysql2
-
Используйте пример подключения:
const fs = require('fs');
const mysql = require('mysql2');
const config = {
host: '<host>',
port: 6033,
database: '<database_name>',
user: '<database_user_name>',
password: '<password>',
ssl: {
rejectUnauthorized: true,
ca: fs.readFileSync('<full_path_to_root_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-адрес ноды;<database_name>
— имя базы данных;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
Подключиться без SSL
Bash
PowerShell
Python
PHP
Go
Node.js
-
Откройте CLI.
-
Подключитесь к кластеру:
mysql --host=<host> \
--port=6033 \
--user=<database_user_name> \
--password \
--database=<database_name> \Укажите:
<host>
— DNS-адрес ноды;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
Откройте CLI.
-
Подключитесь к кластеру:
mysql --host=<host> \
--port=6033 \
--user=<database_user_name> \
--password \
--database=<database_name> \Укажите:
<host>
— DNS-адрес ноды;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
Установите библиотеку PyMySQL:
pip3 install PyMySQL
-
Используйте пример подключения:
import pymysql.cursors
connection = pymysql.connect(host='<host>',
user='<database_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-адрес ноды;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<database_name>
— имя базы данных.
-
Установите библиотеку mysqli:
apt install php-mysqli
-
Используйте пример подключения:
<?php
$conn = new mysqli("<host>:6033", "<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-адрес ноды;<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:6033)/%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)
}
Укажите:
<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<host>
— DNS-адрес ноды;<database_name>
— имя базы данных.
-
Установите библиотеку mysql2:
npm install mysql2
-
Используйте пример подключения:
const mysql = require('mysql2');
const config = {
host: '<host>',
port: 6033,
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();
});