欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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:在两台主节点分别创建从库访问主库使用的用户

MySQL双主双从集群搭建

MySQL双主双从集群搭建

两台主库互为主从,所以在创建用户的时候每一个主库创建一个从库的用户,在创建一个主库的用户,地址为对应的服务器地址

4:分别查看两台主库的master信息通过show master status命令。

MySQL双主双从集群搭建

MySQL双主双从集群搭建

5:关联从库和主库的关系并启动从节点信息

MySQL双主双从集群搭建

MySQL双主双从集群搭建

MySQL双主双从集群搭建

MySQL双主双从集群搭建

6:通过show slave status \G;查询从节点信息

MySQL双主双从集群搭建

7:测试,分别在两台主库上创建数据库 通过create database t1;然后再从节点上查看是否数据同步过来

如果已经同步,则双主双从数据库集群搭建成功。

相关标签: MySQL