MySQL5.7主从架构(读写分离)部署

MySQL5.7主从部署

一、准备工作

从官网下载MySQL的tar包,链接如下:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
我的环境是CentOS7,将tar包解压放在/usr/local/ 下,如图:
在这里插入图片描述
在这里插入图片描述
到目录里面创建两个文件夹 arch tmp
MySQL5.7主从架构(读写分离)部署_第1张图片
创建mysqladmin用户来操作MySQL,步骤如下:
在这里插入图片描述
在这里插入图片描述
这里会有个问题,当切换用户时:
MySQL5.7主从架构(读写分离)部署_第2张图片
这是我们少了一些文件导致的,解决方法如下:
MySQL5.7主从架构(读写分离)部署_第3张图片

二、部署过程

首先是环境变量的配置:
vim mysql/.bash_profile
MySQL5.7主从架构(读写分离)部署_第4张图片
接下来创建my.cnf文件,我的配置如下:

[client]
port            = 3306
socket          = /usr/local/mysql/data/mysql.sock
default-character-set=utf8mb4

[mysqld]
port            = 3306
socket          = /usr/local/mysql/data/mysql.sock

skip-slave-start

skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M

table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600

# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 32 

#isolation level and default engine 
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
#由于是搭建主从架构,所以这个ID和另一台的要不一样
server-id  = 10713
basedir     = /usr/local/mysql
datadir     = /usr/local/mysql/data
pid-file     = /usr/local/mysql/data/hostname.pid

#open performance schema
log-warnings
sysdate-is-now

binlog_format = ROW
log_bin_trust_function_creators=1
log-error  = /usr/local/mysql/data/hostname.err
log-bin = /usr/local/mysql/arch/mysql-bin
expire_logs_days = 7

innodb_write_io_threads=16

relay-log  = /usr/local/mysql/relay_log/relay-log
relay-log-index = /usr/local/mysql/relay_log/relay-log.index
relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info

log_slave_updates=1
gtid_mode=OFF
enforce_gtid_consistency=OFF

# slave
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

#other logs
#general_log =1
#general_log_file  = /usr/local/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/usr/local/mysql/data/slow_log.err

#for replication slave
sync_binlog = 500


#for innodb options 
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend

innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 4
innodb_log_file_size = 1G
innodb_log_buffer_size = 200M

#根据生产需要,调整pool size 这你需要修改为合适的大小
innodb_buffer_pool_size = 1G
#innodb_additional_mem_pool_size = 50M #deprecated in 5.6
tmpdir = /usr/local/mysql/tmp

innodb_lock_wait_timeout = 1000
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2

innodb_locks_unsafe_for_binlog=1

#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on

#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1

[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash
default-character-set=utf8mb4

[mysqlhotcopy]
interactive-timeout

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

配置可以根基自己需要修改,然后移动到/etc目录下 覆盖之前的my.cnf文件
在这里插入图片描述
然后是赋予权限:
MySQL5.7主从架构(读写分离)部署_第5张图片
红色横线是输错的,大家忽略掉。。。

接下来是配置开机启动:
MySQL5.7主从架构(读写分离)部署_第6张图片
然后就是切换到mysqladmin初始化MySQL
MySQL5.7主从架构(读写分离)部署_第7张图片
结果报错 提示少了个什么libaio 那就下呗
yum install -y libaio
完成后再切换回mysqladmin用户去初始化MySQL
again !
在这里插入图片描述
且换到data目录下的hostname.err去复制一下MySQL的密码,是一串你肯定记不住的密码,建议复制到记事本
MySQL5.7主从架构(读写分离)部署_第8张图片
这是我的密码,出现这个也就说明了其实也就是初始化成功了,如果没出现密码,那就是哪一步错了,把arch/*和data/*的东西删了,重新来过吧

接下来是启动:
在这里插入图片描述
我提醒一下,记得回车一下,反正你做了就会知道了

看到:
在这里插入图片描述
就说明服务已经启动了

三、登录MySQL

这时候你复制到记事本的密码有用处了
MySQL5.7主从架构(读写分离)部署_第9张图片
这时候我想看看数据库有哪些
在这里插入图片描述
提示我必须先改了密码才行,那就改呗
在这里插入图片描述
接下来就可以看看数据库了
MySQL5.7主从架构(读写分离)部署_第10张图片
OK 其中一台已经搭建完毕了,别以为搞定了,我要部署的是主从架构,首先我们用同样的方法搭建另一台机器的MySQL

记不住的同学可以往回拉,按照同样的步骤来。
注意一点的是my.cnf文件的server_id记得要改成不一样的

四、主从架构的部署

我的设计是:
master是 10713
slave是 10714

在主库创建slave节点的用户repluser:
MySQL5.7主从架构(读写分离)部署_第11张图片
从库执行:
MySQL5.7主从架构(读写分离)部署_第12张图片
提示缺少文件,退出数据库 创建:
在这里插入图片描述
再次执行:
MySQL5.7主从架构(读写分离)部署_第13张图片
接着启动slave

在这里插入图片描述
查看slave的状态

MySQL5.7主从架构(读写分离)部署_第14张图片
诶,居然IO是NO,我思索了一下 ,估计是我之前直接吧主节点的my.cnf文件传过来,忘记改server_id了 直接初始化MySQL了后才想起来没有修改 然后我又回头去改
估计是这个问题了 我重新在MySQL中设置了server_id

在这里插入图片描述
然后再启动slave,查看slave的状态:

MySQL5.7主从架构(读写分离)部署_第15张图片
正常了,所以说遇到问题不要慌,我贴一下遇到这个问题查看的博客,以示感谢:
https://blog.csdn.net/mqsyoung/article/details/78361469

五、测试主从是否成功

在主库新建一个数据库
MySQL5.7主从架构(读写分离)部署_第16张图片
在从库去查看
MySQL5.7主从架构(读写分离)部署_第17张图片
成功了!再试试主库建一张表
MySQL5.7主从架构(读写分离)部署_第18张图片
插入数据:
MySQL5.7主从架构(读写分离)部署_第19张图片
去从库查看一下是否过来了数据:
MySQL5.7主从架构(读写分离)部署_第20张图片
从库确实有数据过来了,这就做到了读写分离

以上

你可能感兴趣的:(学习生涯)