MySQL安装部署及配置文件优化

MySQL安装部署

一、环境介绍
系统及软件版本

Linux:CentOS Linux 7

MySQL:MySQL-5.6.48

二、安装MySQL
方案一:Yum安装

1、配置yum软件仓库

​ ①检查yum源是否有nginx安装包

[root@mysql-master ~]# yum list | grep mysql

​ ②配置yum(实现步骤①的前提下,可跳过步骤②)

[root@mysql-master yum.repos.d]# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
[root@mysql-master yum.repos.d]# yum localinstall mysql57-community-release-el7-8.noarch.rpm
[root@mysql-master yum.repos.d]# vim mysql-community.repo 
#修改MySQL安装版本,执行命令:vi /etc/yum.repos.d/mysql-community.repo源。例如要安装5.6版本,将5.7的源的enabled = 1修改为enabled = 0。然后再将5.6源的enabled=0改成enabled=1即可。 
[root@mysql-master ~]# yum clean all  
[root@mysql-master ~]# yum repolist   
[root@mysql-master ~]# yum list|grep mysql

2、yum安装mysql

[root@mysql-master mysql]# yum -y install mysql-community-devel mysql-community-server  mysql-community-client #安装这三个包即可
方案二:RPM包安装

1、上传相关rpm包并解压

[root@mysql-slave1]# tar -xvf MySQL-5.6.48-1.el7.x86_64.rpm-bundle.tar

2、卸载其他版本MySQL

[root@mysql-slave1]# yum list mysql*
[root@mysql-slave1]# yum remove -y msyql*

3、安装相关依赖包

[root@mysql-slave1]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
[root@mysql-slave1]# rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
[root@mysql-slave1]# yum install -y numactl perl autoconf

4、安装mysql-5.6.48

[root@mysql-slave1]# rpm -ivh MySQL-server-5.6.44-1.el6.x86_64.rpm
[root@mysql-slave1]# rpm -ivh MySQL-client-5.6.44-1.el6.x86_64.rpm
[root@mysql-slave1]# rpm -ivh MySQL-devel-5.6.44-1.el6.x86_64.rpm
[root@mysql-slave1]# rpm -ivh MySQL-embedded-5.6.44-1.el6.x86_64.rpm
三、初始化配置

​ ①规划分区

[root@web01 ~]# lsblk #检查系统磁盘信息,发现可用磁盘
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk 
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  50G  0 disk 
[root@web01 ~]# fdisk /dev/vdb #对可用磁盘进行分区
[root@web01 ~]# lsblk #检查分区是否成功
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk 
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  50G  0 disk 
└─vdb1 253:17   0  50G  0 part 
[root@web01 ~]# pvcreate /dev/vdb1   #创建物理卷
root@web01 ~]# pvs # 检查物理卷
[root@web01 ~]# vgcreate vg_vdb1 /dev/vdb1 #创建卷组vg_vdb1
[root@web01 ~]# vgs #检查卷组
[root@web01 ~]# lvcreate -n lv_vg_vdb1 -L 49G vg_vdb1 #创建逻辑卷
[root@web01 ~]# lvs #检查逻辑卷
[root@web01 ~]# mkfs.ext4 /dev/vg_vdb1/lv_vg_vdb1 # 对逻辑卷进行格式化
[root@web01 ~]# mount /dev/vg_vdb1/lv_vg_vdb1 /data/ #将/data挂载到逻辑卷上
[root@web01 ~]# df -h #检查是否挂载成功
文件系统                        容量  已用  可用 已用% 挂载点
/dev/vda1                        30G  1.3G   29G    5% /
devtmpfs                        697M     0  697M    0% /dev
tmpfs                           707M     0  707M    0% /dev/shm
tmpfs                           707M  8.4M  699M    2% /run
tmpfs                           707M     0  707M    0% /sys/fs/cgroup
tmpfs                           142M     0  142M    0% /run/user/0
/dev/mapper/vg_vdb1-lv_vg_vdb1   49G   53M   46G    1% /data
[root@web01 ~]# echo "/dev/vg_vdb1/lv_vg_vdb1 /data/ ext4 defaults 0 0" >> /etc/fstab  # 写进配置文件,使其永久生效

​ ②复制Mysql目录到/data目录下

[root@web01 ~]# mv /var/lib/mysql /data/

​ ③修改配置文件

[root@web01 ~]# vim /etc/my.cnf
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[results]
default-character-set=utf8mb4

[connection]
default-character-set=utf8mb4

[mysqld]
#----------------------buffer --------------------------
# key_buffer_size                    =      # 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads /key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%'获得)。              
read_rnd_buffer_size                 = 16M  # 随机读缓冲区大小,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。一般可设置为16M。
sort_buffer_size                     = 16M  # 进行排序的线程缓冲区,增加这值加速ORDER BY或GROUP BY操作。默认数值是2097144(2M),可改为16777208 (16M)。
join_buffer_size 		             = 16M  # 联合查询操作的缓冲区大小,是根据内存大小等来设置的
innodb_buffer_pool_size              = 500M # InnoDB使用该参数指定大小的内存来缓冲数据和索引,对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。 根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。
#----------------------connection------------------------------
max_connections                      = 1000 # 最大连接数max_used_connections / max_connections (理想值≈ 0.85)如果max_used_connections跟max_connections相同,那么就是max_connections设置过低或者超过服务器负载上限了,低于10%则设置过大
back_log 				             = 80 #MySQL能暂存的连接数量mysql中back_log的设置取决于操作系统,在Linux下这个参数的值不能大于系统参数tcp_max_syn_backlog的值
thread_cache_size                    = 20 # 可复用的保存在内存中的线程的数量
wait_timeout                         = 28800 #指定一个请求的最大连接时间
#----------------------table------------------------------------ 
innodb_log_buffer_size               = 4M # log缓存大小,一般为1-8M,默认为1M,对于较大的事务,可以增大缓存大小。 可设置为4M或8M。
innodb_additional_mem_pool_size      = 20M # 该参数指定InnoDB用来存储数据字典和其他内部数据结构的内存池大小。缺省值是1M。通常不用太大,只要够用就行,应该与表结构的复杂度有关系。如果不够用,MySQL会在错误日志中写入一条警告信息。 根据MySQL手册,对于2G内存的机器,推荐值是20M,可适当增加
max_tmp_tables                       = 96 # 创建内存表(memory table)的大小,支持动态改变。这个参数和tmp_table_size一起限制内部内存表的大小。如果某个内部heap堆积表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。
tmp_table_size                       = 4G # 临时表的大小,例如做高级GROUP BY操作生成的临时表。如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果,建议尽量优化查询,要确保查询过程中生成的临时表在内存中,避免临时表过大导致生成基于硬盘的MyISAM表。
max_heap_table_size                  = 4G # 创建内存表(memory table)的大小,支持动态改变。这个参数和tmp_table_size一起限制内部内存表的大小。如果某个内部heap堆积表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。
table_open_cache                     = 512

#---------------------- binlog --------------------------
server_id                            = 1
log-bin                              = ON
log-bin                              = /data/mysql/data/mysql-bin
expire-logs-days                     = 7
binlog-ignore-db                     = mysql
binlog_format                        = ROW
expire_logs_days                     = 5

#---------------------- slow_log--------------------------
slow_query_log                       = ON
slow_query_log_file                  = /data/mysql/data/localhost-slow.log
slow_launch_time                     =2


#---------------------- paths --------------
datadir                              = /data/mysql/data
socket                               = /data/mysql/mysql.sock
bind_address                         = 0.0.0.0
port                                 = 3306
#tmpdir                              = /var/mysql/
character_set_server                 = utf8
skip-host-cache                      
skip-name-resolve                    
auto-increment-increment             = 1
auto-increment-offset                = 1
log-slave-updates                    =
relay_log_purge                      = 1
relay-log                            = /data/mysql/data/slave-relay.log
relay-log-index                      = /data/mysql/data/slave-relay-log.index
expire_logs_days                     = 3
max_binlog_size                      = 50M
sync_binlog                          = 0
explicit_defaults_for_timestamp      = 1
sql_mode                             = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
symbolic-links                       = 0
#---------------------- other stuff -----------------------
event_scheduler                      = 0
query_cache_size                     = 4G
query_cache_type                     = 1
thread_cache_size                    = 8
transaction_isolation                =READ-COMMITTED

#----------------------mysql_safe-----------------------
log-error                            = /data/mysql/data/mysqld.log
pid-file                             = /data/mysql/data/mysqld.pid

4、启动服务并且修改初始密码

[root@web01 data]# systemctl restart mysql
[root@web01 data]# grep password /data/mysql/data/mysqld.log
?????
[root@mysql-slave1 data]# mysql -uroot -p????
mysql> alter user root@'localhost' identified by 'NewPassword'
mysql> exit

5、启动初始化安全脚本mysql_secure_installation

[root@web01 mysql]# mysql_secure_installation 
.
.
.
Enter current password for root (enter for none): NewPasswd #输入mysql密码
Remove anonymous users? [Y/n] Y #是否删除匿名用户 
Disallow root login remotely? [Y/n] Y #是否禁止远程登录 
Remove test database and access to it? [Y/n] Y #删除测试数据库,并登录
Reload privilege tables now? [Y/n] Y #重新载入权限表 
.
.
.
四、主从配置

1、MySQL安装同上

2、配置文件

​ ①在主库配置文件[mysqld]中添加

##---------------------- master_option ---------------------
server-id                             = 1
log-bin                               =/data/mysql/data/mysql-bin.log 
binlog-do-db                          =dbname
binlog-ignore-db                      =mysql
binlog_format                         =ROW
log-bin-trust-function-creators       =1

​ ②在主库中检查配置

[root@mysql-master data]# systemctl restart mysql
[root@mysql-master data]# mysql -uroot -p # 进入主库
mysql> GRANT REPLICATION SLAVE ON *.* to 'repliuser'@'%' identified by 'PASSWORD'; #授权用户
mysql> show master status; # 查看binlog文件名和偏移量
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

​ ③在从库配置文件[mysqld]中添加

##---------------------- Slave_options -------------------------
server-id                             = 2
replicate-do-db                       = dbname
replicate-ignore-db                   = mysql
read_only                             = 1
slave-skip-errors                     = 1032,1062
[root@mysql-slave1 data]# systemctl restart mysql
[root@mysql-slave1 data]# mysql -uroot -p # 进入从库

3、在从库数据库中输入以下指令

mysql> change master to master_host='192.168.145.222',master_user='repliuser',master_password='q123456',master_log_file='mysql-bin.000001',master_log_pos=154;
mysql> start slave;# 启动从服务器复制功能
mysql> show slave status\G;#slave_io和slave_sql处于yes状态,主从即搭建成功
.
.
.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
.
.
.

4、检查主从是否实现预期

​ ①在主库中添加库test


mysql> create DATABASE check;
mysql> use check;
mysql> create TABLE user(name char(20),id int);
mysql> insert into check.user(tom,1);

​ ②在从库中检查

[root@mysql-slave1 data]# mysql -uroot -p # 进入从库
mysql> show DATABASES;
mysql> show TABLES;
mysql> select * from check.user;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值