Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве рассматривается процесс создания и управления репликами для чтения в ваших проектах. Реплики чтения разграничивают работу с доступом только для чтения от операций базы данных в продакшене, поддерживая сценарии использования, такие как горизонтальное масштабирование и аналитические рабочие нагрузки. Подробные сведения об архитектуре реплик чтения и вариантах использования см. в разделе "Реплики чтения".
Понимание реплик чтения
Реплики чтения позволяют создавать один или несколько вычислительных ресурсов с поддержкой только чтения для любой ветви в проекте. Вы можете настроить размер вычислительных ресурсов, выделяемых для каждой реплики, и поддерживаются такие функции, как автомасштабирование и масштабирование до нуля, что обеспечивает вам контроль над вычислительными ресурсами реплик для чтения.
Шаги по созданию, настройке и подключению к реплике для чтения одинаковы независимо от вашего варианта использования.
В API и пакетах SDK реплика чтения — это конечная точка с заданным endpoint_type значением ENDPOINT_TYPE_READ_ONLY.
Поддержка регионов
Lakebase поддерживает создание реплик чтения в том же регионе, что и проект. Межрегионные реплики чтения не поддерживаются.
Синхронизация параметров вычислений
Для реплик чтения Lakebase некоторые параметры Postgres не должны иметь более низких значений, чем основное вычисление для чтения и записи. По этой причине при запуске вычислений реплики чтения следующие параметры синхронизируются с параметрами основного вычисления чтения и записи при запуске вычислений реплики чтения:
max_connectionsmax_prepared_transactionsmax_locks_per_transactionmax_wal_sendersmax_worker_processes
Вмешательство пользователя не требуется. Параметры синхронизируются автоматически при создании читательской реплики. Если вы измените конфигурацию размера вычислительных ресурсов для одновременных операций чтения и записи, необходимо перезапустить вычислительные ресурсы реплики чтения записи, чтобы обеспечить синхронизацию параметров. Дополнительные сведения см. в разделе "Устранение неполадок с задержкой репликации ".
Создание реплик для чтения и управление репликами для чтения
Ограничения
- Максимум 6 читаемых реплик на каждую ветвь.
- Количество реплик чтения засчитывается в проектное ограничение на 20 одновременно активных вычислительных экземпляров. См. ограничения проекта.
Предпосылки
- Проект Lakebase. См. статью "Создание проекта".
Создание реплики чтения
Чтобы создать читаемую реплику, выполните следующие действия.
Пользовательский интерфейс
- В приложении Lakebase перейдите к проекту, ветви и вкладке "Вычисления ".
- Нажмите Добавить Read Replica.
- Введите имя реплики чтения, настройте параметры вычислений (диапазон автомасштабирования и поведение масштабирования до нуля) и нажмите кнопку "Добавить".
пакет SDK Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Endpoint, EndpointSpec, EndpointType
w = WorkspaceClient()
# Create read replica endpoint (READ_ONLY)
endpoint_spec = EndpointSpec(
endpoint_type=EndpointType.ENDPOINT_TYPE_READ_ONLY,
autoscaling_limit_max_cu=2.0
)
endpoint = Endpoint(spec=endpoint_spec)
result = w.postgres.create_endpoint(
parent="projects/my-project/branches/production",
endpoint=endpoint,
endpoint_id="my-read-replica"
).wait()
print(f"Endpoint created: {result.name}")
print(f"Host: {result.status.hosts.host}")
пакет SDK Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
WorkspaceClient w = new WorkspaceClient();
// Create read replica endpoint (READ_ONLY)
EndpointSpec endpointSpec = new EndpointSpec()
.setEndpointType(EndpointType.ENDPOINT_TYPE_READ_ONLY)
.setAutoscalingLimitMaxCu(2.0);
Endpoint endpoint = new Endpoint()
.setSpec(endpointSpec);
Endpoint result = w.postgres().createEndpoint(
new CreateEndpointRequest()
.setParent("projects/my-project/branches/production")
.setEndpoint(endpoint)
.setEndpointId("my-read-replica")
).waitForCompletion();
System.out.println("Endpoint created: " + result.getName());
System.out.println("Host: " + result.getStatus().getHosts().getHost());
интерфейс командной строки (CLI)
# Create a read replica for a branch
databricks postgres create-endpoint projects/my-project/branches/production my-read-replica \
--json '{
"spec": {
"endpoint_type": "ENDPOINT_TYPE_READ_ONLY",
"autoscaling_limit_min_cu": 0.5,
"autoscaling_limit_max_cu": 4.0
}
}'
завиток
curl -X POST "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints?endpoint_id=my-read-replica" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"endpoint_type": "ENDPOINT_TYPE_READ_ONLY",
"autoscaling_limit_min_cu": 0.5,
"autoscaling_limit_max_cu": 4.0
}
}' | jq
Замечание
Конфигурация размера вычислений определяет мощность обработки базы данных. Дополнительные сведения: управление вычислительными ресурсами
Реплика для чтения создается в течение нескольких секунд и отображается на вкладке "Вычисления" для ветви.
Просмотр реплик для чтения
Чтобы просмотреть реплики чтения для ветви, перейдите к проекту в приложении Lakebase, выберите ветвь на странице "Ветви " и просмотрите вкладку "Вычисления ", где перечислены все вычисления реплик чтения.
Подключение к читаемой реплике
При подключении к реплике чтения выполняется тот же процесс, что и при подключении к основной вычислительной системе чтения-записи, помимо того, что вы выбираете вычислительную систему реплики чтения при получении данных о подключении.
Чтобы получить сведения о подключении для реплики для чтения, выполните следующие действия.
- В приложении Lakebase нажмите кнопку "Подключиться" на панели мониторинга проекта.
- Выберите ветвь, базу данных, роль и вычислительные ресурсы реплики чтения из раскрывающегося списка Compute, а затем скопируйте предоставленную строку подключения.
Вы можете подключиться с помощью роли OAuth Postgres так же, как и к основному вычислительному ресурсу с возможностью чтения и записи.
Это важно
Операции записи не разрешены на подключениях реплики для чтения. Попытка выполнения операций записи приведет к ошибке.
Полные сведения о методах проверки подлинности и параметрах подключения см. в разделе "Подключение к проекту".
Изменение реплики чтения
Вы можете изменить реплику чтения, чтобы изменить размер вычислительных ресурсов или конфигурацию масштабирования до нуля.
Чтобы изменить реплику для чтения:
Пользовательский интерфейс
- Перейдите на вкладку вычислений ветви в приложении Lakebase.
- Найдите read replica, нажмите Изменить, обновите настройки вычислений и нажмите Сохранить.
пакет SDK Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Endpoint, EndpointSpec, EndpointType, FieldMask
w = WorkspaceClient()
# Update read replica size
endpoint_name = "projects/my-project/branches/production/endpoints/my-read-replica"
endpoint_spec = EndpointSpec(
endpoint_type=EndpointType.ENDPOINT_TYPE_READ_ONLY,
autoscaling_limit_min_cu=1.0,
autoscaling_limit_max_cu=8.0
)
endpoint = Endpoint(name=endpoint_name, spec=endpoint_spec)
update_mask = FieldMask(field_mask=[
"spec.autoscaling_limit_min_cu",
"spec.autoscaling_limit_max_cu"
])
result = w.postgres.update_endpoint(
name=endpoint_name,
endpoint=endpoint,
update_mask=update_mask
).wait()
print(f"Updated read replica size: {result.status.autoscaling_limit_min_cu}-{result.status.autoscaling_limit_max_cu} CU")
пакет SDK Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.FieldMask;
WorkspaceClient w = new WorkspaceClient();
// Update read replica size
String endpointName = "projects/my-project/branches/production/endpoints/my-read-replica";
EndpointSpec endpointSpec = new EndpointSpec()
.setAutoscalingLimitMinCu(1.0)
.setAutoscalingLimitMaxCu(8.0);
FieldMask updateMask = FieldMask.newBuilder()
.addPaths("spec.autoscaling_limit_min_cu")
.addPaths("spec.autoscaling_limit_max_cu")
.build();
w.postgres().updateEndpoint(
new UpdateEndpointRequest()
.setName(endpointName)
.setEndpoint(new Endpoint().setSpec(endpointSpec))
.setUpdateMask(updateMask)
);
System.out.println("Update initiated");
интерфейс командной строки (CLI)
# Update a read replica's autoscaling settings
databricks postgres update-endpoint projects/my-project/branches/production/endpoints/my-read-replica "spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
--json '{
"spec": {
"autoscaling_limit_min_cu": 1.0,
"autoscaling_limit_max_cu": 8.0
}
}'
завиток
# Update a read replica's autoscaling settings
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-read-replica?update_mask=spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/my-project/branches/production/endpoints/my-read-replica",
"spec": {
"autoscaling_limit_min_cu": 1.0,
"autoscaling_limit_max_cu": 8.0
}
}' | jq
Дополнительные сведения: управление вычислительными ресурсами
Удалить реплику чтения
Удаление реплики чтения — это необратимое действие. Однако при необходимости можно быстро создать новую читаемую реплику.
Чтобы удалить реплику для чтения:
Пользовательский интерфейс
- Перейдите на вкладку вычислений ветви в приложении Lakebase.
- Найдите реплику для чтения, нажмите «Изменить», «Удалить» и подтвердите действие удаления.
пакет SDK Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Delete endpoint
w.postgres.delete_endpoint(
name="projects/my-project/branches/production/endpoints/my-read-replica"
).wait()
print("Endpoint deleted")
Операция удаления асинхронна. Метод .wait() блокируется до завершения удаления.
пакет SDK Java
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
// Delete endpoint
w.postgres().deleteEndpoint(
"projects/my-project/branches/production/endpoints/my-read-replica"
);
System.out.println("Delete initiated");
интерфейс командной строки (CLI)
# Delete a read replica
databricks postgres delete-endpoint projects/my-project/branches/production/endpoints/my-read-replica
завиток
curl -X DELETE "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-read-replica" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Ответ.
{
"name": "projects/my-project/branches/production/endpoints/my-read-replica/operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.protobuf.Empty"
}
}
Устранение проблем с задержкой репликации
Если реплики чтения отстают, выполните следующие действия, чтобы диагностировать и устранить проблему:
Проверка выравнивания конфигурации
Если обнаружена задержка репликации, убедитесь, что конфигурации для вычислений первичной и реплики чтения согласованы. В частности, убедитесь, что следующие параметры совпадают между вашей основной вычислительной единицей и вычислительной единицей реплики для чтения.
max_connectionsmax_prepared_transactionsmax_locks_per_transactionmax_wal_sendersmax_worker_processes
Вы можете выполнить следующий запрос как на основном вычислительном узле для чтения и записи, так и на вычислительном узле реплики для чтения с помощью редактора SQL Lakebase или SQL-клиента, например psql.
SELECT name, setting
FROM pg_settings
WHERE name IN (
'max_connections',
'max_prepared_transactions',
'max_locks_per_transaction',
'max_wal_senders',
'max_worker_processes'
);
Сравните результаты обоих вычислений, чтобы определить какие-либо неправильные параметры.
Перезапуск вычислений реплики чтения
Если конфигурации не согласованы, перезапустите вычислительные ресурсы реплики чтения, чтобы автоматически обновить их параметры. Перейдите на вкладку Компьютеры вашей ветви, найдите реплику для чтения и нажмите Изменить, а затем Перезапустить.
Замечание
При увеличении размеров основного вычислительного ресурса для чтения и записи всегда перезапускайте связанные реплики чтения, чтобы обеспечить согласованность их настроек.