Linux7环境下安装MySQL5.7.23
安装方式:RPM
- 安装Mysql
- 部署Mysql
使用xhell的文件传输功能将Mysql rpm软件包从本地传输至服务器端。
执行” tar xvf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /data/Tools/”,将Mysql软件包解压到/data/Tools目录下。
在安装MySQL包之前,需要执行” yum install numactl libaio perl -y”安装以下依赖环境。
进入MySQL软件包的解压目录下,执行“rpm -ivh”命令分别对解压后的(common-5.7.23、libs-5.7.23、client-5.7.23、server-5.7.23)rpm软件包进行安装。
(分析以下提示信息,在安装common的时候提示“conflicts with file from package mariadb-libs-1:5.5.56-2.el7.x86_64”,原因是因为系统自带的mariadb数据库与MySQL产生了冲突,需要将mariadb强制卸载)。
将mariadb软件包卸载,重新安装Mysql-common即可。
安装libs。
安装client。
安装server。
到此MySQL已经安装完成。
查看MySQL是否成功启动,并加入到开机自启项中。
在MySQL主服务器和从服务器上放行MySQL服务端口。
启动以后,MySQL会自动生成一个数据库管理员用户的登陆密码,并记录在mysql的日志文件里,如下图所示。
更改数据库管理员密码和远程登陆用户密码,并刷新权限。
SET PASSWORD = PASSWORD('Qwe123123...')
GRANT ALL ON *.* TO [email protected]'%' IDENTIFIED BY 'Qwe123123...'
新建MySQL数据目录。
将原数据文件全部拷贝到新路径。
修改Data目录的宿主权限和其他用户执行权限。
将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,使配置文件生效。
- MySQL主从复制
配置master
编辑master主配置文件,设置本机的序号为1,并开启二进制日志功能。
重启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)。
配置slave
编辑slave主配置文件,设置本机的序号为2。
重启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;
关闭同步,开启同步,并查看同步状态。
当Slave_IO_Running:Slave_SQL_Running:都为YES,则说明主从同步设置成功。
查看主从同步是否正常
在主服务器上创建一个名为qmhd的数据库,从服务器上查看数据同步成功。