Linux7环境下安装MySQL5.7.23

 

安装方式:RPM

 

  1. 安装Mysql
  1. 部署Mysql

使用xhell的文件传输功能将Mysql rpm软件包从本地传输至服务器端。

Linux7环境下安装MySQL5.7.23

执行 tar xvf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /data/Tools/”,Mysql软件包解压到/data/Tools目录下。

Linux7环境下安装MySQL5.7.23

在安装MySQL包之前,需要执行 yum install numactl libaio perl -y安装以下依赖环境。

Linux7环境下安装MySQL5.7.23

进入MySQL软件包的解压目录下,执行“rpm -ivh”命令分别对解压后的(common-5.7.23、libs-5.7.23、client-5.7.23、server-5.7.23)rpm软件包进行安装。

Linux7环境下安装MySQL5.7.23

(分析以下提示信息,在安装common的时候提示“conflicts with file from package mariadb-libs-1:5.5.56-2.el7.x86_64”,原因是因为系统自带的mariadb数据库与MySQL产生了冲突,需要将mariadb强制卸载)。

将mariadb软件包卸载,重新安装Mysql-common即可。

Linux7环境下安装MySQL5.7.23

安装libs。

Linux7环境下安装MySQL5.7.23

安装client。

Linux7环境下安装MySQL5.7.23

安装server。

Linux7环境下安装MySQL5.7.23

到此MySQL已经安装完成。

查看MySQL是否成功启动,并加入到开机自启项中。

Linux7环境下安装MySQL5.7.23

在MySQL主服务器和从服务器上放行MySQL服务端口。

Linux7环境下安装MySQL5.7.23

启动以后,MySQL会自动生成一个数据库管理员用户的登陆密码,并记录在mysql的日志文件里,如下图所示。

Linux7环境下安装MySQL5.7.23

更改数据库管理员密码和远程登陆用户密码,并刷新权限。

SET PASSWORD = PASSWORD('Qwe123123...')

GRANT ALL ON *.* TO [email protected]'%' IDENTIFIED BY 'Qwe123123...'

新建MySQL数据目录。

Linux7环境下安装MySQL5.7.23

将原数据文件全部拷贝到新路径。

Linux7环境下安装MySQL5.7.23

修改Data目录的宿主权限和其他用户执行权限。

Linux7环境下安装MySQL5.7.23

MySQL /etc目录下的my.cnf主配置文件替换为经优化过的主配置文件,优化文件如下所示:

# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
# Configuration name Mysql5.7.19 generated for [email protected] at 2017-09-20 05:54:28
[client]
user=root
password=toortoor
host = localhost

# 提示符美化([email protected]\:当前用户名@\)(h:主机)(d:默认数据库名字)(r:小时12小时)(m:分钟)(s:秒)
prompt=mysql(\\[email protected]\\h:\\d:\\r:\\m:\\s)>

# 默认字符集
default-character-set=utf8

[mysql]
# CLIENT #
port                           = 3306
socket                         = /data/UnicomSMS/Mysql-5.7.23/Data/mysql.sock
default-character-set=utf8

[mysqld]
# GENERAL #

# Mysql服务唯一编号,每个mysql服务必须为1
server-id               =1

# Mysql短时间内可以存在的堆栈数量,增加可以使短时间内有/data/UnicomSMS/Mysql-5.7.23/Data//data/UnicomSMS/Mysql-5.7.23/Data/更多的连接数
back_log                = 300

# MySQL打开的文件描述符限制,默认最小1024;
# 当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个。
open-files-limit            = 1024
user                           = mysql

#默认引擎,最好InnoDB
default-storage-engine         = InnoDB

#设置socke文件所在目录
socket                         = /data/UnicomSMS/Mysql-5.7.23/Data/mysql.sock
#设置pid文件所在目录
pid-file                       = /data/UnicomSMS/Mysql-5.7.23/Data/mysql.pid

 
# MyISAM #
# 指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。
# 如果你使它太大,系统将开始换页并且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。通过检查状态值Key_read_requests和Key_reads,
# 可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低,
# 至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE 'key_read%'获得)。注意:该参数值设置的过大反而会是服务器整体效率降低
key-buffer-size                = 64M
 
# SAFETY #

# 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。
# 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。
max-allowed-packet             = 16M

# 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。
max-connect-errors             = 1000000

innodb                         = FORCE
 
# DATA STORAGE #
# 从自定义目录读取数据库文件。
datadir                        = /data/UnicomSMS/Mysql-5.7.23/Data
# 使用自定义目录作为根目录(安装目录)。
basedir                        =/usr

# BINARY LOGGING #
# 启用二进制日志功能
log-bin                        = /data/UnicomSMS/Mysql-5.7.23/Data/mysql-bin

# 二进制日志自动删除的天数
expire-logs-days               = 18
# 每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0,意思是由操作系统来负责二进制日志文件的同步工作。
sync-binlog                    = 1
 
# CACHES AND LIMITS #
# 临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。
tmp-table-size                 = 32M
# HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里。
max-heap-table-size            = 32M
# 查询缓存区的工作模式:0, 禁用查询缓存区; 1,启用查询缓存区(默认设置); 2,”按需分配”模式,只响应SELECT SQL_CACHE命令。
query-cache-type               = 0
# 查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)。
query-cache-size               = 0
# MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。
max-connections                = 2000
#线程池缓存大小( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 )
thread-cache-size              = 100
#用于指定操作系统允许mysqld打开的最大文件数。只读变量,修改需要重启mysql服务。
open-files-limit               = 65535
#指定表高速缓存的大小
table-open-cache           = 4096
table-definition-cache         = 4096
#等待服务器首次回应的时间,连接超时之前的最大秒数
connect_timeout               = 30
#接受数据包的大小
max_allowed_packet             = 32M
 
# INNODB #
innodb_data_home_dir           =/data/UnicomSMS/Mysql-5.7.23/Data
innodb_data_file_path          = ibdata1:12M;ibdata2:10M:autoextend
innodb_log_file_size           = 256M    #64G_RAM+ = 768, 24G_RAM+ = 512, 8G_RAM+ = 256, 2G_RAM+ = 128 
#innodb_additional_mem_pool_size    = 4M    #global buffer
innodb_status_file              #extra reporting
innodb_table_locks           = 0    #preserve table locks
innodb_log_buffer_size            = 128M     #global buffer
innodb_lock_wait_timeout        = 60
innodb_thread_concurrency       = 16    #recommend 2x core quantity
innodb_commit_concurrency       = 16    #recommend 4x num disks
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 4
innodb-log-file-size           = 512M
innodb-flush-log-at-trx-commit = 2
innodb-file-per-table          = 0
innodb-buffer-pool-size        = 14G
innodb_flush_method           = O_DIRECT       #O_DIRECT = local/DAS, O_DSYNC = SAN/iSCSI
innodb_support_xa        = 0           #recommend 0, disable xa to negate extra disk flush
skip-innodb-doublewrite
innodb_autoextend_increment=128M
bulk_insert_buffer_size=128M
# LOGGING #
log-error                      = /data/UnicomSMS/Mysql-5.7.23/Data/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /data/UnicomSMS/Mysql-5.7.23/Data/mysql-slow.log

## Per-Thread Buffers * (max_connections) = total per-thread mem usage
thread_stack                    = 256K      #default: 32bit: 192K, 64bit: 256K
sort_buffer_size                = 1M      #default: 2M, larger may cause perf issues
read_buffer_size         = 1M      #default: 128K, change in increments of 4K
read_rnd_buffer_size         = 1M      #default: 256K                
join_buffer_size         = 1M      #default: 128K
binlog_cache_size         = 64K      #default: 32K, size of buffer to hold TX queries
## total per-thread buffer memory usage: 8832000K = 8.625GB

## Query Cache
query_cache_size         = 32M    #global buffer
query_cache_limit         = 512K    #max query result size to put in cache


#设置服务端字符集
character_set_server=utf8
#字符集校对
collation_server=utf8_general_ci
#关闭一个非交互的连接之前所要等待的秒数,默认28800
wait_timeout=2147483
#关闭一个交互的连接之前所要等待的秒数,默认28800
interactive_timeout=31536000
#每个排序线程分配的缓冲区的大小,默认是2M
sort_buffer_size = 16M
#每个线程的顺序扫描 MyISAM 表分配一个缓冲区 大小(以字节为单位)为每表扫描,MOREN
read_buffer_size = 16M
#当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘,默认是2M
read_rnd_buffer_size = 32M
#当读取从一个行 MyISAM 表中后顺序键排序操作,行 读取这个缓冲区,以避免磁盘寻求,默认是8M
myisam_sort_buffer_size = 64M
#Try number of CPU's*2 for thread_concurrency,默认是10
#thread_concurrency = 8(5.7.2以后删除该参数)
sql_mode='NO_ENGINE_SUBSTITUTION'
[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

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

[mysqlhotcopy]
interactive-timeout
 

重新启动MySQL,使配置文件生效。

Linux7环境下安装MySQL5.7.23

  1. MySQL主从复制

配置master

编辑master主配置文件,设置本机的序号为1,并开启二进制日志功能。

Linux7环境下安装MySQL5.7.23

重启MySQL,以使配置文件生效。

创建主从同步的MySQL账号。

##创建replocation用户,并指定该用户只能在主机192.168.208.129上登录

create user 'replication'@'192.168.208.129' identified by 'Qwe123123...'

##为repolication用户赋予REPOLICATION SLAVE权限,随后刷新权限。

grant repolication slave on *.* to 'replication'@'192.168.208.129'

flush privileges

在数据库里执行“show master status;”语句,查看master状态,记录二进制文件名(mysql-bin.0000001)和偏移量值(789)。

Linux7环境下安装MySQL5.7.23

配置slave

编辑slave主配置文件,设置本机的序号为2。

Linux7环境下安装MySQL5.7.23

重启MySQL,登陆MySQL,执行同步SQL语句(需要主服务器IP或主机名,登陆凭证,master的端口,二进制日志名称,偏移量值和从库和主库每次重新建立连接的等待时间)。

CHANGE MASTER TO

MASTER_HOST='192.168.208.128',

MASTER_USER='replication',

MASTER_PASSWORD='Qwe123123...',

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=789,

    MASTER_CONNECT_RETRY=10;

Linux7环境下安装MySQL5.7.23

关闭同步,开启同步,并查看同步状态。

Linux7环境下安装MySQL5.7.23

Linux7环境下安装MySQL5.7.23

当Slave_IO_Running:Slave_SQL_Running:都为YES,则说明主从同步设置成功。

查看主从同步是否正常

在主服务器上创建一个名为qmhd的数据库,从服务器上查看数据同步成功。

Linux7环境下安装MySQL5.7.23

 

Linux7环境下安装MySQL5.7.23