MySQL双主双从集群搭建
程序员文章站
2022-07-14 23:49:29
...
准备工作:准备四台具有相同版本的的MySQL数据库服务器或者在同一服务器安装四个版本相同的MySQL数据库系统。
1:修改主节点的my.cnf文件,文件路径一般在/etc/my.cnf目录下,如果未找到,可以通过find / -name my.cnf命令查找
[mysqld]
#character-set-server = utf8mb4 服务器基本字符集
server-id = 1 #服务器的唯一标识
port = 3306 #端口
max_connections = 1000 #最大客户端连接数
max_connect_errors = 6000 #单次连接最大可能出现的错误数.
skip-name-resolve #禁止域名解析
back_log = 300 #当mysql连接达到最大连接数时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log
#open_files_limit = 65535 #mysql打开的最大文件描述符,如果设置的话需要修改shell的文件描述符 通过ulimit -n查看
table_open_cache = 128 #表的开启基础缓存. 单位是个数
max_allowed_packet = 4M #数据库服务器端可以接收的数据包大小
binlog_cache_size = 1M #为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。提高记录bin-log的效率
max_heap_table_size = 8M #定义了用户可以创建的内存表(memory table)的大小
tmp_table_size = 16M #它规定了内部内存临时表的最大值,每个线程都要分配。这个参数是设置查询语句而设置的临时表的大小
log_bin = master-log #binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句,通常与主从复制结合,mysql会自动提供后缀和文件类型.
log_slave_updates=1 #双主多从集群更新主节点的binlog日志位置
default_storage_engine = InnoDB #默认数据库引擎
#default-storage-engine = MyISAM
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常;STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制
read_buffer_size = 2M #读缓存大小
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
binlog_format = mixed
expire_logs_days = 10
slow_query_log = 1
long_query_time = 1
performance_schema = 0
explicit_defaults_for_timestamp
lower_case_table_names = 1
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump] #安全提供.
quick
max_allowed_packet = 16M
[myisamchk] #数据库额外辅助功能配置, 如缓存,索引缓存等.
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
注意:主节点的log_bin和log_slave_updates=1属性必须指定,server_id属性必须唯一,修改完之后重启MySQL数据库
2:修改从节点的my.cnf文件
[mysqld]
#character-set-server = utf8mb4 服务器基本字符集
server-id = 2 #服务器的唯一标识
port = 3306 #端口
max_connections = 1000 #最大客户端连接数
max_connect_errors = 6000 #单次连接最大可能出现的错误数.
skip-name-resolve #禁止域名解析
back_log = 300 #当mysql连接达到最大连接数时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log
#open_files_limit = 65535 #mysql打开的最大文件描述符,如果设置的话需要修改shell的文件描述符 通过ulimit -n查看
table_open_cache = 128 #表的开启基础缓存. 单位是个数
max_allowed_packet = 4M #数据库服务器端可以接收的数据包大小
binlog_cache_size = 1M #为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。提高记录bin-log的效率
max_heap_table_size = 8M #定义了用户可以创建的内存表(memory table)的大小
tmp_table_size = 16M #它规定了内部内存临时表的最大值,每个线程都要分配。这个参数是设置查询语句而设置的临时表的大小
default_storage_engine = InnoDB #默认数据库引擎
#default-storage-engine = MyISAM
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常;STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制
read_buffer_size = 2M #读缓存大小
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
binlog_format = mixed
expire_logs_days = 10
slow_query_log = 1
long_query_time = 1
performance_schema = 0
explicit_defaults_for_timestamp
lower_case_table_names = 1
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump] #安全提供.
quick
max_allowed_packet = 16M
[myisamchk] #数据库额外辅助功能配置, 如缓存,索引缓存等.
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
其他一些参数根据需要进行指定
3:在两台主节点分别创建从库访问主库使用的用户
两台主库互为主从,所以在创建用户的时候每一个主库创建一个从库的用户,在创建一个主库的用户,地址为对应的服务器地址
4:分别查看两台主库的master信息通过show master status命令。
5:关联从库和主库的关系并启动从节点信息
6:通过show slave status \G;查询从节点信息
7:测试,分别在两台主库上创建数据库 通过create database t1;然后再从节点上查看是否数据同步过来
如果已经同步,则双主双从数据库集群搭建成功。