首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MariaDB 10.0 實例部署與多源複制配置實戰(博文推薦)

     編輯:MySQL 綜合教學

MariaDB 10.0 實例部署與多源複制配置實戰(博文推薦)

轉自王偉博客,記錄 MariaDB 10.0.17 原始碼編譯安裝、配置檔優化、多源複制(Multi-Source Replication)配置要點,適合分庫分表匯總統計場景。

一、MariaDB 10.0 下載與編譯安裝

# 下載
wget https://mirrors.opencas.cn/mariadb/mariadb-10.0.17/source/mariadb-10.0.17.tar.gz
tar -zxf mariadb-10.0.17.tar.gz
cd mariadb-10.0.17

# CMake 配置(含線程池、關閉 NUMA)
cmake . \
-DCMAKE_INSTALL_PREFIX=/data/mariadb \
-DMYSQL_DATADIR=/data/mariadb/data \
-DSYSCONFDIR=/data/mariadb/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/data/mariadb/tmp/mysql.sock \
-DENABLED_LOCAL_INFILE=ON \
-DENABLED_PROFILING=ON \
-DWITH_DEBUG=0 \
-DMYSQL_TCP_PORT=3306

# 編譯安裝
make && make install

二、生產級配置檔 /data/mariadb/etc/my.cnf 精華

[mysqld]
port=3306
bind-address=0.0.0.0
lower_case_table_names=1
basedir=/data/mariadb
datadir=/data/mariadb/data
tmpdir=/data/mariadb/tmp
socket=/data/mariadb/tmp/mysql.sock

# 日誌
log-output=FILE
log-error=/data/mariadb/log/error.log
slow-query-log=1
slow_query_log_file=/data/mariadb/log/slow.log
long_query_time=0.1
sync_binlog=1
skip-external-locking
skip-name-resolve
default-storage-engine=INNODB
character-set-server=utf8

# 連線與緩衝
wait_timeout=28800
back_log=1024
max_connections=1000
max_user_connections=0
max_connect_errors=100
thread_concurrency=16
thread_cache_size=512
table_open_cache=16384
table_definition_cache=16384
sort_buffer_size=2M
join_buffer_size=2M
read_buffer_size=4M
read_rnd_buffer_size=4M
key_buffer_size=64M
myisam_sort_buffer_size=64M
tmp_table_size=256M
max_heap_table_size=256M
open_files_limit=65535

# 複制
server-id=1
report-host=172.16.183.56
log-bin=mysql-bin
binlog_format=MIXED
expire_logs_days=7
relay-log=relay-log
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
log-slave-updates=1
skip-slave-start
relay-log-recovery=1

# InnoDB 核心
innodb_data_home_dir=/data/mariadb/data
innodb_data_file_path=ibdata1:2G;ibdata2:2G:autoextend
innodb_autoextend_increment=500
innodb_log_group_home_dir=/data/mariadb/data
innodb_buffer_pool_size=8G
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
innodb_buffer_pool_instances=8
innodb_additional_mem_pool_size=128M
innodb_log_files_in_group=3
innodb_log_file_size=512M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_flush_method=O_DIRECT
innodb_max_dirty_pages_pct=75
innodb_io_capacity=1000
innodb_thread_concurrency=0
innodb_thread_sleep_delay=500
innodb_concurrency_tickets=1000
innodb_open_files=65535
innodb_file_per_table=1

# 線程池(MariaDB/Percona 專屬,高併發神器)
thread_handling=pool-of-threads

# 關閉 NUMA(跨節點記憶體訪問優化)
innodb_buffer_pool_populate=1

[mysqld_safe]
flush_caches
numa_interleave

三、初始化與啟動

/data/mariadb/scripts/mysql_install_db \
--basedir=/data/mariadb --datadir=/data/mariadb/data \
--defaults-file=/data/mariadb/etc/my.cnf --user=mysql

/data/mariadb/bin/mysqld_safe --defaults-file=/data/mariadb/etc/my.cnf --user=mysql &

# 開機自啟
echo "/data/mariadb/bin/mysqld_safe --defaults-file=/data/mariadb/etc/my.cnf --user=mysql &" >> /etc/rc.local

四、多源複制核心優勢

  • 單一從庫可同時複制多個主庫(MySQL 5.7 不支援,8.0 才引入)
  • 適用場景:分庫分表後的數據匯總/報表/統計,將多個分片主庫資料聚合到單一從庫
  • 每個來源通道獨立配置 CHANGE MASTER TO ... FOR CHANNEL 'channel_name'

五、版本選擇建議

新版本雖有吸引人特性(多源複制、線程池),但「坑未踩完、資料少、生產環境慎用」。
主流穩定版仍為 MySQL/Percona/MariaDB 5.5/5.6 系列。除非有明確特性需求(如多源複制),否則優先選擇長期支援版本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved