概述
作为一个普通开发者,通常使用CentOS等操作系统进行开发,如何从零参与到PolarDB-X的开发中呢?
本文档对PolarDB-X的开发流程进行了说明,覆盖代码编译、数据库安装、部署等流程。
备注:本文档主要针对CentOS7和Ubuntu20操作系统,其他Linux发行版原理类似。
准备工作
- 下载 polardbx-engine 代码,main分支
- 下载 polardbx-sql 代码,main分支
- 下载 polardbx-glue 代码,main分支
- 下载 polardbx-cdc 代码,main分支
编译 PolarDB-X DN (存储节点,代号polardbx-engine)
此步骤编译和安装polardbx-engine(mysql)
安装依赖(CentOS7)
yum install -y sudo git make redhat-lsb-core
yum remove -y cmake
sudo ln -s /usr/bin/cmake3 /usr/bin/cmake
yum install -y wget java-11-openjdk-devel cmake3 automake bison openssl-devel ncurses-devel libaio-devel mysql snappy-devel lz4-devel bzip2-devel autoconf libstdc++-static libarchive
yum install -y devtoolset-10
如果安装 devtoolset-10 报错 Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
,可以尝试把 /etc/yum.repos.d/
下的 CentOS-SCLo-scl.repo
和 CentOS-SCLo-scl-rh.repo
文件替换成以下内容
CentOS-SCLo-scl.repo:
[centos-sclo-sclo-testing]
name=CentOS-7 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
CentOS-SCLo-scl-rh.repo:
[centos-sclo-rh-testing]
name=CentOS-7 - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
编译
# dn 不允许在 root 下运行,我们可以建一个新 user polarx 来继续后面的操作
useradd -ms /bin/bash polarx
echo "polarx:polarx" | chpasswd
echo "polarx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - polarx
# 进入 polardbx-engine 代码路径
cd polardbx-engine
# 安装 boost1.77
cat extra/boost/boost_1_77_0.tar.bz2.* > extra/boost/boost_1_77_0.tar.bz2
# 编译安装
source /opt/rh/devtoolset-10/enable
sh build.sh -t release
编译好的文件会在 /home/polarx/tmp_run
下(如果不是 polarx 用户的,则在对应用户目录下的 tmp_run),我们把他移动到另一个目录
mkdir -p /home/polarx/run
mv /home/polarx/tmp_run /home/polarx/run/polardbx-engine
编译 PolarDB-X CN (计算节点,代号polardbx-sql)
此步骤编译和安装polardbx-sql & polardbx-glue代码。
# 提前安装好 Maven 3
# 进入代码目录
cd polardbx-sql
# 确保 polardbx-rpc 子模块 (polardbx-glue) 已初始化
git submodule update --init
# 编译打包
mvn install -DskipTests -D env=release
# 解压运行(按需修改目标路径)
mkdir -p /home/polarx/run/polardbx-sql
cp target/polardbx-server-*.tar.gz /home/polarx/run/polardbx-sql/
cd /home/polarx/run/polardbx-sql
tar xzvf polardbx-server-*.tar.gz
编译 PolarDB-X CDC(日志节点,代号polardbx-cdc)
此步骤编译和安装 polardbx-cdc 代码。
# 进入CDC代码
cd polardbx-cdc
# 编译打包
mvn clean
mvn -U clean install -Dmaven.test.skip=true -DfailIfNoTests=false -e -P release
# 解压运行(按需修改目标路径)
mkdir -p /home/polarx/run/polardbx-cdc
cp polardbx-cdc-assemble/target/polardbx-binlog.tar.gz /home/polarx/run/polardbx-cdc/
cd /home/polarx/run/polardbx-cdc
tar xzvf polardbx-binlog.tar.gz
启动PolarDB-X DN
- 此步骤启动一个mysql进程,作为metadb和dn
- 参考附录中的mysql配置文件(my.cnf),可进行相应修改,默认使用 4886 作为 mysql端口,34886 作为私有协议端口
- 默认使用 /home/polarx/data 作为mysql数据目录,可以修改成其他目录
注意:启动 DN 需要使用非 root 账号完成
启动mysql:
mkdir -p /home/polarx/data/{data,log,run,tmp,mysql}
touch /home/polarx/data/log/mysqld_safe.err
# 假设 my.cnf 存放在 /home/polarx/data/my.cnf
/home/polarx/run/polardbx-engine/bin/mysqld --defaults-file=/home/polarx/data/my.cnf --initialize-insecure
(/home/polarx/run/polardbx-engine/bin/mysqld_safe --defaults-file=/home/polarx/data/my.cnf &)
启动PolarDB-X CN
启动mysql进程之后,便可以初始化PolarDB-X,需要准备以下几个配置:
- metadb user:以下采用
my_polarx
- metadb database:创建metadb库,以下采用
polardbx_meta_db_polardbx
- 密码加密key(dnPasswordKey):以下采用
asdf1234ghjk5678
- PolarDB-X默认用户名:默认为
polarx_root
- PolarDB-X默认用户密码:默认为
123456
,可通过-S
参数修改
注意:启动 CN 需要使用非 root 账号完成
修改配置文件 conf/server.properties,逐个替换以下配置项:
# PolarDB-X 服务端口
serverPort=8527
# PolarDB-X RPC 端口
rpcPort=9090
# MetaDB地址
metaDbAddr=127.0.0.1:4886
# MetaDB私有协议端口
metaDbXprotoPort=34886
# MetaDB用户
metaDbUser=my_polarx
metaDbName=polardbx_meta_db_polardbx
# PolarDB-X实例名
instanceId=polardbx-polardbx
galaxyXProtocol=2
初始化PolarDB-X:
- -I: 进入初始化模式
- -P: 之前准备的dnPasswordKey
- -d: DataNode的地址列表,单机模式下就是之前启动的mysql进程的端口和地址
- -r: 连接metadb的密码
- -u: 为PolarDB-X创建的根用户
- -S: 为PolarDB-X创建的根用户密码
cd /home/polarx/run/polardbx-sql/bin
sh startup.sh \
-I \
-P asdf1234ghjk5678 \
-d 127.0.0.1:4886:34886 \
-r "" \
-u polardbx_root \
-S "123456"
此步骤中会生成内部密码及加密密码,需要将其填写配置文件 conf/server.properties 中,用于后续访问,在上述指令执行后的输出中找到类似如下文本:
Generate password for user: my_polarx && M8%V5%K9^$5%oY0%yC0+&1!J7@8+R6)
Encrypted password: DB84u4UkU/OYlMzu3aj9NFdknvxYgedFiW9z59bVnoc=
Root user for polarx with password: polardbx_root && 123456
Encrypted password for polarx: H1AzXc2NmCs61dNjH5nMvA==
======== Paste following configurations to conf/server.properties ! =======
metaDbPasswd=HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
我们需要把上面的 metaDbPasswd=HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
写到 server.properties 里。注意每次都会生成不同的随机密码,所以请填写实际生成的文本。
最后一步,启动PolarDB-X:
cd /home/polarx/run/polardbx-sql/bin
sh startup.sh -P asdf1234ghjk5678
等待片刻,连接PolarDB-X验证,如果能连上,说明数据库启动成功啦,可以愉快地运行各种SQL啦:
mysql -h127.1 -P8527 -upolardbx_root
启动PolarDB-X CDC
启动PolarDB-X进程之后,便可以初始化PolarDB-X CDC组件,需要准备以下几个配置:
- metadb user:和启动PolarDB-X时设置的值保持一致,以下采用
my_polarx
- metadb database:和启动PolarDB-X时设置的值保持一致,以下采用
polardbx_meta_db_polardbx
- metadb password:和启动PolarDB-X时设置的值保持一致,需使用密文,这一步需要按照实际情况替换,以下采用
HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
- metadb port:和启动MySQL时设置的值保持一致,以下采用
4886
- 密码加密key(dnPasswordKey):和启动PolarDB-X时设置的值保持一致,以下采用
asdf1234ghjk5678
- PolarDB-X用户名:和启动PolarDB-X时设置的值保持一致,以下采用默认值
polardbx_root
- PolarDB-X用户密码:和启动PolarDB-X时设置的值保持一致,需使用密文,也是以下采用默认值
UY1tQsgNvP8GJGGP8vHKKA==
- PolarDB-X端口:和启动PolarDB-X时设置的值保持一致,以下采用默认值
8527
- 当前机器分配给CDC使用的内存大小:以下采用16000代指,单位为M,实际配置值请替换为真实值
注意:启动 CDC 需要使用非 root 账号完成
修改配置文件 /home/polarx/run/polardbx-cdc/polardbx-binlog.standalone/conf/config.properties,将如下示例中的${HOME}替换为当前用户的根目录,如/home/polarx
useEncryptedPassword=true
polardbx.instance.id=polardbx-polardbx
mem_size=16000
metaDb_url=jdbc:mysql://127.0.0.1:4886/polardbx_meta_db_polardbx?useSSL=false
metaDb_username=my_polarx
metaDbPasswd=HMqvkvXZtT7XedA6t2IWY8+D7fJWIJir/mIY1Nf1b58=
polarx_url=jdbc:mysql://127.0.0.1:8527/__cdc__
polarx_username=polardbx_root
polarx_password=UY1tQsgNvP8GJGGP8vHKKA==
dnPasswordKey=asdf1234ghjk5678
cluster_id=cluster_1
ins_id=1001
ins_ip=127.0.0.1
daemon_port=3007
ssh_port=3008
common_ports='{"cdc1_port":"3009","cdc3_port":"3011","cdc2_port":"3010","cdc6_port":"3014","cdc5_port":"3013","cdc4_port":"3012"}'
binlog.dir.path=/home/polarx/binlog/
按需替换目录 /home/admin 为 /home/polarx
sed -i 's/admin/polarx/g' /home/polarx/run/polardbx-cdc/polardbx-binlog.standalone/conf/config.properties
接下来,即可启动CDC daemon进程,命令如下所示。启动之后,通过jps命令查看进程状态,CDC会有3个附属进程,分别是DaemonBootStrap、TaskBootStrap和DumperBootStrap,CDC的系统日志会输出到${HOME}/logs目录下,全局binlog日志会输出到binlog.dir.path参数配置的目录下,TaskBootStrap进程和DumperBootStrap进程被kill后,会被Daemon进程自动拉起。
cd /home/polarx/run/polardbx-cdc/polardbx-binlog.standalone/bin
sh daemon.sh start
登录PolarDB-X,执行一些DDL或DML操作,然后执行show binary logs 和show binlog events命令,验证全局binlog的生成状态,enjoy it!
附录
mysql配置文件
[mysqld]
datadir = /home/polarx/data/data
general_log_file = /home/polarx/data/log/general.log
innodb_data_home_dir = /home/polarx/data/mysql
innodb_log_group_home_dir = /home/polarx/data/mysql
log-bin-index = /home/polarx/data/mysql/mysql-bin.index
log_bin = /home/polarx/data/mysql/mysql-bin.log
log_error = /home/polarx/data/log/alert.log
master_info_file = /home/polarx/data/mysql/master.info
relay_log = /home/polarx/data/mysql/slave-relay.log
relay_log_index = /home/polarx/data/mysql/slave-relay-log.index
relay_log_info_file = /home/polarx/data/mysql/slave-relay-log.info
slave_load_tmpdir = /home/polarx/data/tmp
slow_query_log_file = /home/polarx/data/mysql/slow_query.log
socket = /home/polarx/data/run/mysql.sock
tmpdir = /home/polarx/data/tmp
innodb_buffer_pool_size = 1073741824
loose_rpc_port = 34886
port = 4886
loose_cluster-id = 1234
loose_cluster-info = 127.0.0.1:14886@1
auto_increment_increment = 1
auto_increment_offset = 1
autocommit = ON
automatic_sp_privileges = ON
avoid_temporal_upgrade = OFF
back_log = 3000
binlog_cache_size = 1048576
binlog_checksum = CRC32
binlog_order_commits = OFF
binlog_row_image = full
binlog_rows_query_log_events = ON
binlog_stmt_cache_size = 32768
binlog_transaction_dependency_tracking = WRITESET
block_encryption_mode = "aes-128-ecb"
bulk_insert_buffer_size = 4194304
character_set_server = utf8
concurrent_insert = 2
connect_timeout = 10
default_authentication_plugin = mysql_native_password
default_storage_engine = InnoDB
default_time_zone = +8:00
default_week_format = 0
delay_key_write = ON
delayed_insert_limit = 100
delayed_insert_timeout = 300
delayed_queue_size = 1000
disconnect_on_expired_password = ON
div_precision_increment = 4
end_markers_in_json = OFF
enforce_gtid_consistency = ON
eq_range_index_dive_limit = 200
event_scheduler = OFF
expire_logs_days = 0
explicit_defaults_for_timestamp = OFF
flush_time = 0
ft_max_word_len = 84
ft_min_word_len = 4
ft_query_expansion_limit = 20
general_log = OFF
group_concat_max_len = 1024
gtid_mode = ON
host_cache_size = 644
init_connect = ''
innodb_adaptive_flushing = ON
innodb_adaptive_flushing_lwm = 10
innodb_adaptive_hash_index = OFF
innodb_adaptive_max_sleep_delay = 150000
innodb_autoextend_increment = 64
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_chunk_size = 33554432
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_dump_pct = 25
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = ON
innodb_change_buffer_max_size = 25
innodb_change_buffering = none
innodb_checksum_algorithm = crc32
innodb_cmp_per_index_enabled = OFF
innodb_commit_concurrency = 0
innodb_compression_failure_threshold_pct = 5
innodb_compression_level = 6
innodb_compression_pad_pct_max = 50
innodb_concurrency_tickets = 5000
innodb_data_file_purge = ON
innodb_data_file_purge_interval = 100
innodb_data_file_purge_max_size = 128
innodb_deadlock_detect = ON
innodb_disable_sort_file_cache = ON
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_flush_neighbors = 0
innodb_flush_sync = ON
innodb_ft_cache_size = 8000000
innodb_ft_enable_diag_print = OFF
innodb_ft_enable_stopword = ON
innodb_ft_max_token_size = 84
innodb_ft_min_token_size = 3
innodb_ft_num_word_optimize = 2000
innodb_ft_result_cache_limit = 2000000000
innodb_ft_sort_pll_degree = 2
innodb_ft_total_cache_size = 640000000
innodb_io_capacity = 20000
innodb_io_capacity_max = 40000
innodb_lock_wait_timeout = 50
innodb_log_buffer_size = 16777216
innodb_log_checksums = ON
innodb_log_file_size = 134217728
innodb_lru_scan_depth = 8192
innodb_max_dirty_pages_pct = 75
innodb_max_dirty_pages_pct_lwm = 0
innodb_max_purge_lag = 0
innodb_max_purge_lag_delay = 0
innodb_max_undo_log_size = 1073741824
innodb_monitor_disable =
innodb_monitor_enable =
innodb_old_blocks_pct = 37
innodb_old_blocks_time = 1000
innodb_online_alter_log_max_size = 134217728
innodb_open_files = 20000
innodb_optimize_fulltext_only = OFF
innodb_page_cleaners = 4
innodb_print_all_deadlocks = ON
innodb_purge_batch_size = 300
innodb_purge_rseg_truncate_frequency = 128
innodb_purge_threads = 4
innodb_random_read_ahead = OFF
innodb_read_ahead_threshold = 0
innodb_read_io_threads = 4
innodb_rollback_on_timeout = OFF
innodb_rollback_segments = 128
innodb_sort_buffer_size = 1048576
innodb_spin_wait_delay = 6
innodb_stats_auto_recalc = ON
innodb_stats_method = nulls_equal
innodb_stats_on_metadata = OFF
innodb_stats_persistent = ON
innodb_stats_persistent_sample_pages = 20
innodb_stats_transient_sample_pages = 8
innodb_status_output = OFF
innodb_status_output_locks = OFF
innodb_strict_mode = ON
innodb_sync_array_size = 16
innodb_sync_spin_loops = 30
innodb_table_locks = ON
innodb_tcn_cache_level = block
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 0
innodb_write_io_threads = 4
interactive_timeout = 7200
key_buffer_size = 16777216
key_cache_age_threshold = 300
key_cache_block_size = 1024
key_cache_division_limit = 100
lc_time_names = en_US
local_infile = OFF
lock_wait_timeout = 1800
log_bin_trust_function_creators = ON
log_bin_use_v1_row_events = 0
log_error_verbosity = 2
log_queries_not_using_indexes = OFF
log_slave_updates = 0
log_slow_admin_statements = ON
log_slow_slave_statements = ON
log_throttle_queries_not_using_indexes = 0
long_query_time = 1
loose_ccl_max_waiting_count = 0
loose_ccl_queue_bucket_count = 4
loose_ccl_queue_bucket_size = 64
loose_ccl_wait_timeout = 86400
loose_consensus_auto_leader_transfer = ON
loose_consensus_auto_reset_match_index = ON
loose_consensus_election_timeout = 10000
loose_consensus_io_thread_cnt = 8
loose_consensus_large_trx = ON
loose_consensus_log_cache_size = 536870912
loose_consensus_max_delay_index = 10000
loose_consensus_max_log_size = 20971520
loose_consensus_max_packet_size = 131072
loose_consensus_prefetch_cache_size = 268435456
loose_consensus_worker_thread_cnt = 8
loose_implicit_primary_key = 1
loose_information_schema_stats_expiry = 86400
loose_innodb_buffer_pool_in_core_file = OFF
loose_innodb_commit_cleanout_max_rows = 9999999999
loose_innodb_doublewrite_pages = 64
loose_innodb_lizard_stat_enabled = OFF
loose_innodb_log_compressed_pages = ON
loose_innodb_log_write_ahead_size = 4096
loose_innodb_parallel_read_threads = 1
loose_innodb_undo_retention = 1800
loose_innodb_undo_space_reserved_size = 1024
loose_innodb_undo_space_supremum_size = 102400
loose_internal_tmp_mem_storage_engine = TempTable
loose_new_rpc = ON
loose_optimizer_switch = index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on
loose_optimizer_trace = enabled=off,one_line=off
loose_optimizer_trace_features = greedy_search=on,range_optimizer=on,dynamic_range=on,repeated_subselect=on
loose_performance-schema_instrument = 'wait/lock/metadata/sql/mdl=ON'
loose_performance_point_lock_rwlock_enabled = ON
loose_performance_schema-instrument = 'memory/%%=COUNTED'
loose_performance_schema_accounts_size = 10000
loose_performance_schema_consumer_events_stages_current = ON
loose_performance_schema_consumer_events_stages_history = ON
loose_performance_schema_consumer_events_stages_history_long = ON
loose_performance_schema_consumer_events_statements_current = OFF
loose_performance_schema_consumer_events_statements_history = OFF
loose_performance_schema_consumer_events_statements_history_long = OFF
loose_performance_schema_consumer_events_transactions_current = OFF
loose_performance_schema_consumer_events_transactions_history = OFF
loose_performance_schema_consumer_events_transactions_history_long = OFF
loose_performance_schema_consumer_events_waits_current = OFF
loose_performance_schema_consumer_events_waits_history = OFF
loose_performance_schema_consumer_events_waits_history_long = OFF
loose_performance_schema_consumer_global_instrumentation = OFF
loose_performance_schema_consumer_statements_digest = OFF
loose_performance_schema_consumer_thread_instrumentation = OFF
loose_performance_schema_digests_size = 10000
loose_performance_schema_error_size = 0
loose_performance_schema_events_stages_history_long_size = 0
loose_performance_schema_events_stages_history_size = 0
loose_performance_schema_events_statements_history_long_size = 0
loose_performance_schema_events_statements_history_size = 0
loose_performance_schema_events_transactions_history_long_size = 0
loose_performance_schema_events_transactions_history_size = 0
loose_performance_schema_events_waits_history_long_size = 0
loose_performance_schema_events_waits_history_size = 0
loose_performance_schema_hosts_size = 10000
loose_performance_schema_instrument = '%%=OFF'
loose_performance_schema_max_cond_classes = 0
loose_performance_schema_max_cond_instances = 10000
loose_performance_schema_max_digest_length = 0
loose_performance_schema_max_digest_sample_age = 0
loose_performance_schema_max_file_classes = 0
loose_performance_schema_max_file_handles = 0
loose_performance_schema_max_file_instances = 1000
loose_performance_schema_max_index_stat = 10000
loose_performance_schema_max_memory_classes = 0
loose_performance_schema_max_metadata_locks = 10000
loose_performance_schema_max_mutex_classes = 0
loose_performance_schema_max_mutex_instances = 10000
loose_performance_schema_max_prepared_statements_instances = 1000
loose_performance_schema_max_program_instances = 10000
loose_performance_schema_max_rwlock_classes = 0
loose_performance_schema_max_rwlock_instances = 10000
loose_performance_schema_max_socket_classes = 0
loose_performance_schema_max_socket_instances = 1000
loose_performance_schema_max_sql_text_length = 0
loose_performance_schema_max_stage_classes = 0
loose_performance_schema_max_statement_classes = 0
loose_performance_schema_max_statement_stack = 1
loose_performance_schema_max_table_handles = 10000
loose_performance_schema_max_table_instances = 1000
loose_performance_schema_max_table_lock_stat = 10000
loose_performance_schema_max_thread_classes = 0
loose_performance_schema_max_thread_instances = 10000
loose_performance_schema_session_connect_attrs_size = 0
loose_performance_schema_setup_actors_size = 10000
loose_performance_schema_setup_objects_size = 10000
loose_performance_schema_users_size = 10000
loose_rds_audit_log_buffer_size = 16777216
loose_rds_audit_log_enabled = OFF
loose_rds_audit_log_event_buffer_size = 8192
loose_rds_audit_log_row_limit = 100000
loose_rds_audit_log_version = MYSQL_V1
loose_replica_read_timeout = 3000
loose_session_track_system_variables = "*"
loose_session_track_transaction_info = OFF
loose_slave_parallel_workers = 32
low_priority_updates = 0
lower_case_table_names = 1
master_info_repository = TABLE
master_verify_checksum = OFF
max_allowed_packet = 1073741824
max_binlog_cache_size = 18446744073709551615
max_binlog_stmt_cache_size = 18446744073709551615
max_connect_errors = 65536
max_connections = 5532
max_error_count = 1024
max_execution_time = 0
max_heap_table_size = 67108864
max_join_size = 18446744073709551615
max_length_for_sort_data = 4096
max_points_in_geometry = 65536
max_prepared_stmt_count = 16382
max_seeks_for_key = 18446744073709551615
max_sort_length = 1024
max_sp_recursion_depth = 0
max_user_connections = 5000
max_write_lock_count = 102400
min_examined_row_limit = 0
myisam_sort_buffer_size = 262144
mysql_native_password_proxy_users = OFF
net_buffer_length = 16384
net_read_timeout = 30
net_retry_count = 10
net_write_timeout = 60
ngram_token_size = 2
open_files_limit = 65535
opt_indexstat = ON
opt_tablestat = ON
optimizer_prune_level = 1
optimizer_search_depth = 62
optimizer_trace_limit = 1
optimizer_trace_max_mem_size = 1048576
optimizer_trace_offset = -1
performance_schema = ON
preload_buffer_size = 32768
query_alloc_block_size = 8192
query_prealloc_size = 8192
range_alloc_block_size = 4096
range_optimizer_max_mem_size = 8388608
read_rnd_buffer_size = 442368
relay_log_info_repository = TABLE
relay_log_purge = OFF
relay_log_recovery = OFF
replicate_same_server_id = OFF
loose_rotate_log_table_last_name =
server_id = 1234
session_track_gtids = OFF
session_track_schema = ON
session_track_state_change = OFF
sha256_password_proxy_users = OFF
show_old_temporals = OFF
skip_slave_start = OFF
slave_exec_mode = strict
slave_net_timeout = 4
slave_parallel_type = LOGICAL_CLOCK
slave_pending_jobs_size_max = 1073741824
slave_sql_verify_checksum = OFF
slave_type_conversions =
slow_launch_time = 2
slow_query_log = OFF
sort_buffer_size = 868352
sql_mode = NO_ENGINE_SUBSTITUTION
stored_program_cache = 256
sync_binlog = 1
sync_master_info = 10000
sync_relay_log = 1
sync_relay_log_info = 10000
table_open_cache_instances = 16
temptable_max_ram = 1073741824
thread_cache_size = 100
thread_stack = 262144
tls_version = TLSv1.2,TLSv1.3
tmp_table_size = 2097152
transaction_alloc_block_size = 8192
transaction_isolation = REPEATABLE-READ
transaction_prealloc_size = 4096
transaction_write_set_extraction = XXHASH64
updatable_views_with_limit = YES
wait_timeout = 28800
loose_optimizer_switch=index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on,skip_scan=off
xa_detach_on_prepare = OFF
[mysqld_safe]
pid_file = /home/polarx/data/run/mysql.pid