Centos6.5 Mysql5.7 多主一從 (多臺主機上拉取的資料 合併到同一臺數據庫)
以下是轉過來的部分做了修改:尊重原創,原創無價
#### 解決思路:
1、主資料庫使用Innodb引擎,並設定sql_mode為 NO_AUTO_CREATE_USER
2、從庫開啟多例項,將多個主庫裡面的資料通過主從複製同步到同一個資料目錄。從庫的每個例項對應一個主庫。多個例項使用同一個資料目錄。
3、從庫使用Myisam引擎,關閉從庫預設的innodb引擎,Myisam引擎可以訪問同一個資料的表。
4、設定主庫和從庫的sql_mode都為NO_AUTO_CREATE_USER,只有這樣主庫的innodb引擎的sql同步到從庫的時候才能執行成功。
#### 方案架構圖:
#### 環境說明:
主庫-1:192.168.1.1
主庫-2:192.168.1.2
從庫-3:192.168.1.3
#### 實現步驟:(Mysql安裝步驟這裡不在描述)
1、主資料庫配置檔案,多個主庫配置檔案除了server-id不能一樣其他都一樣。(基本配置資訊配置好,mysql可以啟動,其他配置需要每一項新增,每新增一次需要啟動mysql,沒有免費的午餐.......)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
[[email protected] ~]
#cat /etc/my.cnf
[client]
port= 3306
socket=
/tmp/mysql
.sock
[mysqld]
port = 3306 basedir =
/usr/local/mysql
datadir =
/data/mysql
character-
set
-server = utf8mb4
default-storage-engine = InnoDB
socket =
/tmp/mysql
.sock
skip-name-resolv = 1
open_files_limit = 65535
back_log = 103
max_connections = 512
max_connect_errors = 100000
table_open_cache = 2048
tmp-table-size = 32M
max-heap-table-size = 32M
#query-cache-type = 0
query-cache-size = 0
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 51
query_cache_size = 32M
tmp_table_size = 96M
max_heap_table_size = 96M
query_cache_type=1
log-error=
/data/logs/mysqld
.log
slow_query_log = 1
slow_query_log_file =
/data/logs/slow
.log
long_query_time = 0.1
# BINARY LOGGING #
server-
id
= 1
log-bin =
/data/binlog/mysql-bin
log-bin-index =
/data/binlog/mysql-bin
.index
expire-logs-days = 14
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 8M
max_binlog_size = 1024M
log_slave_updates
#binlog_format = row
binlog_format = MIXED
//
這裡使用的混合模式複製
relay_log_recovery = 1
#不需要同步的表
replicate-wild-ignore-table=mydb.sp_counter
#不需要同步的庫
replicate-ignore-db = mysql,information_schema,performance_schema
key_buffer_size = 32M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
transaction_isolation = REPEATABLE-READ
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 5734M
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_locks_unsafe_for_binlog = 0
[mysqldump]
quick
max_allowed_packet = 32M
|
2、從庫配置檔案。多個從庫配置檔案除了server-id不能一樣其他都一樣。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
[[email protected] ~]# cat /etc/my.cnf
[client]
port= 3306
socket= /tmp/mysql.sock
[mysqld_multi]
# 指定相關命令的路徑
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
##複製主庫1的資料##
[mysqld2]
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql
character-set-server = utf8mb4
#指定例項1的sock檔案和pid檔案
socket = /tmp/mysql.sock
pid-file=/data/mysql/mysql.pid
skip-name-resolv = 1
open_files_limit = 65535
back_log = 103
max_connections = 512
max_connect_errors = 100000
table_open_cache = 2048
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-size = 0
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 51
query_cache_size = 32M
tmp_table_size = 96M
max_heap_table_size = 96M
query_cache_type=1
#指定第一個例項的錯誤日誌和慢查詢日誌路徑
log-error=/data/logs/mysqld.log
slow_query_log = 1
slow_query_log_file = /data/logs/slow.log
long_query_time = 0.1
# BINARY LOGGING#
# 指定例項1的binlog和relaylog路徑為/data/binlog目錄
# 每個從庫和每個例項的server_id不能一樣。
server-id = 2
log-bin = /data/binlog/mysql-bin
log-bin-index =/data/binlog/mysql-bin.index
relay_log = /data/binlog/mysql-relay-bin
relay_log_index = /data/binlog/mysql-relay.index
master-info-file = /data/mysql/master.info
relay_log_info_file = /data/mysql/relay-log.info
read_only = 1
expire-logs-days = 14
sync_binlog = 1
#需要同步的庫,如果不設定,默認同步所有庫。
#replicate-
do
-db = xxx
#不需要同步的表
replicate-wild-ignore-table=mydb.sp_counter
#不需要同步的庫
replicate-ignore-db = mysql,information_schema,performance_schema
binlog_cache_size = 4M
max_binlog_cache_size = 8M
max_binlog_size = 1024M
log_slave_updates =1
#binlog_format = row
binlog_format = MIXED
relay_log_recovery = 1
key_buffer_size = 32M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
#設定預設引擎為Myisam,下面這些引數一定要加上。
default
-storage-engine=MyISAM
default
-tmp-storage-engine=MYISAM
#關閉innodb引擎
skip-innodb
innodb = OFF
disable-innodb
#設定sql_mode模式為NO_AUTO_CREATE_USER
sql_mode = NO_AUTO_CREATE_USER
#關閉innodb引擎
loose-skip-innodb
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-
default
-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0
##複製主庫2的資料##
[mysqld3]
port = 3307
basedir = /usr/local/mysql
datadir = /data/mysql
character-set-server = utf8mb4
#指定例項2的sock檔案和pid檔案
socket = /tmp/mysql3.sock
pid-file=/data/mysql/mysql3.pid
skip-name-resolv = 1
open_files_limit = 65535
back_log = 103
max_connections = 512
max_connect_errors = 100000
table_open_cache = 2048
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-size = 0
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 51
query_cache_size = 32M
tmp_table_size = 96M
max_heap_table_size = 96M
query_cache_type=1
log-error=/data/logs/mysqld3.log
slow_query_log = 1
slow_query_log_file = /data/logs/slow3.log
long_query_time = 0.1
# BINARY LOGGING #
# 這裡一定要注意,不能把兩個例項的binlog和relaylog放到同一個目錄,
# 這裡指定例項2的binlog日誌為/data/binlog2目錄
# 每個從庫和每個例項的server_id不能一樣。
server-id = 22
log-bin = /data/binlog2/mysql-bin
log-bin-index =/data/binlog2/mysql-bin.index
relay_log = /data/binlog2/mysql-relay-bin
relay_log_index = /data/binlog2/mysql-relay.index
master-info-file = /data/mysql/master3.info
relay_log_info_file = /data/mysql/relay-log3.info
read_only = 1
expire-logs-days = 14
sync_binlog = 1
#不需要複製的庫
replicate-ignore-db = mysql,information_schema,performance_schema
binlog_cache_size = 4M
max_binlog_cache_size = 8M
max_binlog_size = 1024M
log_slave_updates =1
#binlog_format = row
binlog_format = MIXED
relay_log_recovery = 1
key_buffer_size = 32M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
#設定預設引擎為Myisam
default
-storage-engine=MyISAM
default
-tmp-storage-engine=MYISAM
#關閉innodb引擎
skip-innodb
innodb = OFF
disable-innodb
#設定sql_mode模式為NO_AUTO_CREATE_USER
sql_mode = NO_AUTO_CREATE_USER
#關閉innodb引擎,下面這些引數一定要加上。
loose-skip-innodb
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
|