MySQL 服务搭建(通用 linux 系统安装)
环境: Centos7.2 一: 获取 mysq 包 下载 mysql https://dev.mysql.com/downloads/mysql/
二: Install MySQL Server
1 解压 xxx.tar.gz
2 进入解压后的目录
3 添加组和用户 #groupadd mysql #useradd -r -g mysql mysql -r 禁止用户 mysql 进行登录操作
4 改变目录拥有者 chown -R mysql:mysql ./ 5 新建数据目录 mkdir data 6 /etc/profile 添加 PATH 路径 7 初始化 mysqld #mysqld initialize user=mysql datadir=xx basedir=xx 这一步会创建用户 root, 并且生成登录密码, 需要记住密码
8 修改配置文件
cp $MYSQL_HOME/support-files/mysql.server /etc/init.d/mysql 修改 / etc/init.d/mysql 中的 datadir 和 basedir
- vim / etc / my.cnf[client] port = 3306 socket = /root/soft / mysql - 5.7.20 - linux - glibc2.12 - x86_64 / mysql.sock[mysqld] port = 3306 socket = /root/soft / mysql - 5.7.20 - linux - glibc2.12 - x86_64 / mysql.sock basedir = /root/soft / mysql - 5.7.20 - linux - glibc2.12 - x86_64 datadir = /root/soft / mysql - 5.7.20 - linux - glibc2.12 - x86_64 / data pid - file = /root/soft / mysql - 5.7.20 - linux - glibc2.12 - x86_64 / data / mysql.pid user = mysql bind - address = 0.0.0.0 server - id = 1#表示是本机的序号为1,
- 一般来讲就是master的意思skip - name - resolve#禁止MySQL对外部连接进行DNS解析,
- 使用这一选项可以消除MySQL进行DNS解析的时间但需要注意,
- 如果开启该选项,
- ##则所有远程主机连接授权都要使用IP地址方式,
- 否则MySQL将无法正常处理连接请求##skip - networking#back_log = 600##MySQL能有的连接数量当主要MySQL线程在一个很短时间内得到非常多的连接请求,
- 这就起作用,
- ##然后主线程花些时间 (尽管很短)检查连接并且启动一个新线程back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中##如果期望在一个短时间内有很多连接,
- 你需要增加它也就是说,
- 如果MySQL的连接数据达到max_connections时,
- 新来的请求将会被存在堆栈中,
- ##以等待某一连接释放资源,
- 该堆栈的数量即back_log,
- 如果等待连接的数量超过back_log,
- 将不被授予连接资源##另外,
- 这值 (back_log)限于您的操作系统对到来的TCP / IP连接的侦听队列的大小##你的操作系统在这个队列大小上有它自己的限制 (可以检查你的OS文档找出这个变量的最大值),
- 试图设定back_log高于你的操作系统的限制将是无效的#max_connections = 1000##MySQL的最大连接数,
- 如果服务器的并发连接请求量比较大,
- 建议调高此值,
- 以增加并行连接数量,
- 当然这建立在机器能支撑的情况下,
- 因为如果连接数越多,
- 介于MySQL会为每个连接提供连接缓冲区,
- 就会开销越多的内存,
- 所以要适当调整该值,
- 不能盲目提高设值可以过'conn%'通配符查看当前状态的连接数量,
- 以定夺该值的大小#max_connect_errors = 6000##对于同一主机,
- 如果有超出该参数值个数的中断错误连接,
- 则该主机将被禁止连接如需对该主机进行解禁,
- 执行: FLUSH HOST#open_files_limit = 65535##MySQL打开的文件描述符限制,
- 默认最小1024;当open_files_limit没有被配置的时候,
- 比较max_connections * 5和ulimit - n的值,
- 哪个大用哪个,
- ##当open_file_limit被配置的时候,
- 比较open_files_limit和max_connections * 5的值,
- 哪个大用哪个#table_open_cache = 128##MySQL每打开一个表,
- 都会读入一些数据到table_open_cache缓存中,
- 当MySQL在这个缓存中找不到相应信息时,
- 才会去磁盘上读取默认值64##假定系统有200个并发连接,
- 则需将此参数设置为200 * N(N为每个连接所需的文件描述符数目);##当把table_open_cache设置为很大时,
- 如果系统处理不了那么多文件描述符,
- 那么就会出现客户端失效,
- 连接不上#max_allowed_packet = 4M##接受的数据包大小;增加该变量的值十分安全,
- 这是因为仅当需要时才会分配额外内存例如,
- 仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存##该变量之所以取较小默认值是一种预防措施,
- 以捕获客户端和服务器之间的错误信息包,
- 并确保不会因偶然使用大的信息包而导致内存溢出#binlog_cache_size = 1M##一个事务,
- 在没有提交的时候,
- 产生的日志,
- 记录到Cache中;等到事务提交需要提交的时候,
- 则把日志持久化到磁盘默认binlog_cache_size大小32K#max_heap_table_size = 8M##定义了用户可以创建的内存表 (memory table)的大小这个值用来计算内存表的最大行数值这个变量支持动态改变#tmp_table_size = 16M##MySQL的heap(堆积)表缓冲大小所有联合在一个DML指令内完成,
- 并且大多数联合甚至可以不用临时表即可以完成##大多数临时表是基于内存的 (HEAP)表具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上##如果某个内部heap(堆积)表大小超过tmp_table_size,
- MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表还可以通过设置tmp_table_size选项来增加临时表的大小也就是说,
- 如果调高该值,
- MySQL同时将增加heap表的大小,
- 可达到提高联接查询速度的效果#read_buffer_size = 2M##MySQL读入缓冲区大小对表进行顺序扫描的请求将分配一个读入缓冲区,
- MySQL会为它分配一段内存缓冲区read_buffer_size变量控制这一缓冲区的大小##如果对表的顺序扫描请求非常频繁,
- 并且你认为频繁扫描进行得太慢,
- 可以通过增加该变量值以及内存缓冲区大小提高其性能#read_rnd_buffer_size = 8M##MySQL的随机读缓冲区大小当按任意顺序读取行时 (例如, 按照排序顺序),
- 将分配一个随机读缓存区进行排序查询时,
- ##MySQL会首先扫描一遍该缓冲,
- 以避免磁盘搜索,
- 提高查询速度,
- 如果需要排序大量数据,
- 可适当调高该值但MySQL会为每个客户连接发放该缓冲空间,
- 所以应尽量适当设置该值,
- 以避免内存开销过大#sort_buffer_size = 8M##MySQL执行排序使用的缓冲大小如果想要增加ORDER BY的速度,
- 首先看是否可以让MySQL使用索引而不是额外的排序阶段##如果不能,
- 可以尝试增加sort_buffer_size变量的大小#join_buffer_size = 8M##联合查询操作所能使用的缓冲区大小,
- 和sort_buffer_size一样,
- 该参数对应的分配内存也是每连接独享#thread_cache_size = 8##这个值 (默认8)表示可以重新利用保存在缓存中线程的数量,
- 当断开连接时如果缓存中还有空间,
- 那么客户端的线程将被放到缓存中,
- ##如果线程重新被请求,
- 那么请求将从缓存中读取,
- 如果缓存中是空的或者是新的请求,
- 那么这个线程将被重新创建,
- 如果有很多新的线程,
- ##增加这个值可以改善系统性能.通过比较Connections和Threads_created状态的变量,
- 可以看到这个变量的作用 ( > 表示要调整的值)##根据物理内存设置规则如下: ##1G > 8##2G > 16##3G > 32##大于3G > 64#query_cache_size = 8M##MySQL的查询缓冲大小 (从4.0.1开始, MySQL提供了查询缓冲机制)使用查询缓冲,
- MySQL将SELECT语句和查询结果存放在缓冲区中,
- ##今后对于同样的SELECT语句 (区分大小写),
- 将直接从缓冲区中读取结果根据MySQL用户手册,
- 使用查询缓冲最多可以达到238 % 的效率##通过检查状态值'Qcache_%',
- 可以知道query_cache_size设置是否合理: 如果Qcache_lowmem_prunes的值非常大,
- 则表明经常出现缓冲不够的情况,
- ##如果Qcache_hits的值也非常大,
- 则表明查询缓冲使用非常频繁,
- 此时需要增加缓冲大小;如果Qcache_hits的值不大,
- 则表明你的查询重复率很低,
- ##这种情况下使用查询缓冲反而会影响效率,
- 那么可以考虑不用查询缓冲此外,
- 在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲#query_cache_limit = 2M##指定单个查询能够使用的缓冲区大小,
- 默认1M#key_buffer_size = 4M##指定用于索引的缓冲区大小,
- 增加它可得到更好处理的索引 (对所有读和多重写),
- 到你能负担得起那样多如果你使它太大,
- ##系统将开始换页并且真的变慢了对于内存在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%'获得)注意: 该参数值设置的过大反而会是服务器整体效率降低#ft_min_word_len = 4##分词词汇最小长度,
- 默认4#transaction_isolation = REPEATABLE - READ##MySQL支持4种事务隔离级别,
- 他们分别是: ##READ - UNCOMMITTED,
- READ - COMMITTED,
- REPEATABLE - READ,
- SERIALIZABLE.##如没有指定,
- MySQL默认采用的是REPEATABLE - READ,
- ORACLE默认的是READ - COMMITTED#log_bin = mysql - bin#binlog_format = mixed#expire_logs_days = 30#超过30天的binlog删除#log_error = /data/mysql / mysql - error.log#错误日志路径#slow_query_log = 1#long_query_time = 1#慢查询时间超过1秒则为慢查询#slow_query_log_file = /data/mysql / mysql - slow.log#performance_schema = 0#explicit_defaults_for_timestamp##lower_case_table_names = 1#不区分大小写#skip - external - locking#MySQL选项以避免外部锁定该选项默认开启#
- default - storage - engine = InnoDB#默认存储引擎#innodb_file_per_table = 1##InnoDB为独立表空间模式,
- 每个数据库的每个表都会生成一个数据空间##独立表空间优点: ##1.每个表都有自已独立的表空间##2.每个表的数据和索引都会存在自已的表空间中##3.可以实现单表在不同的数据库中移动##4.空间可以回收 (除drop table操作处, 表空不能自已回收)##缺点: ##单表增加过大,
- 如超过100G##结论: ##共享表空间在Insert操作上少有优势其它都没独立表空间表现好当启用独立表空间时,
- 请合理调整: innodb_open_files#innodb_open_files = 500##限制Innodb能打开的表的数据,
- 如果库里的表特别多的情况,
- 请增加这个这个值默认是300#innodb_buffer_pool_size = 64M##InnoDB使用一个缓冲池来保存索引和原始数据,
- 不像MyISAM.##这里你设置越大,
- 你在存取表里面数据时所需要的磁盘I / O越少.##在一个独立使用的数据库服务器上,
- 你可以设置这个变量到服务器物理内存大小的80 % ##不要设置过大,
- 否则,
- 由于物理内存的竞争可能导致操作系统的换页颠簸.##注意在32位系统上你每个进程可能被限制在2 - 3.5G用户层面内存限制,
- ##所以不要设置的太高.#innodb_write_io_threads = 4#innodb_read_io_threads = 4##innodb使用后台线程处理数据页上的读写I / O(输入输出)请求,
- 根据你的CPU核数来更改,
- 默认是4##注: 这两个参数不支持动态改变,
- 需要把该参数加入到my.cnf里,
- 修改完后重启MySQL服务,
- 允许值的范围从1 - 64#innodb_thread_concurrency = 0##默认设置为0,
- 表示不限制并发数,
- 这里推荐设置为0,
- 更好去发挥CPU多核处理能力,
- 提高并发量#innodb_purge_threads = 1##InnoDB中的清除操作是一类定期回收无用数据的操作在之前的几个版本中,
- 清除操作是主线程的一部分,
- 这意味着运行时它可能会堵塞其它的数据库操作##从MySQL5.5.X版本开始,
- 该操作运行于独立的线程中,
- 并支持更多的并发数用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单##独线程,
- 默认情况下参数设置为0(不使用单独线程),
- 设置为1时表示使用单独的清除线程建议为1#innodb_flush_log_at_trx_commit = 2##0 : 如果innodb_flush_log_at_trx_commit的值为0,
- log buffer每秒就会被刷写日志文件到磁盘,
- 提交事务的时候不做任何操作 (执行是由mysql的master thread线程来执行的##主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件 (REDO LOG)中不论事务是否已经提交)默认的日志文件是ib_logfile0,
- ib_logfile1##1 : 当设为默认值1的时候,
- 每次提交事务的时候,
- 都会将log buffer刷写到日志##2 : 如果设为2,
- 每次提交事务都会写日志,
- 但并不会执行刷的操作每秒定时会刷到日志文件要注意的是,
- 并不能保证100 % 每秒一定都会刷到磁盘,
- 这要取决于进程的调度##每次事务提交的时候将数据写入事务日志,
- 而这里的写入仅是调用了文件系统的写入操作,
- 而文件系统是有缓存的,
- 所以这个写入并不能保证数据已经写入到物理磁盘##默认值1是为了保证完整的ACID当然,
- 你可以将这个配置项设为1以外的值来换取更高的性能,
- 但是在系统崩溃的时候,
- 你将会丢失1秒的数据##设为0的话,
- mysqld进程崩溃的时候,
- 就会丢失最后1秒的事务设为2,
- 只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据InnoDB在做恢复的时候会忽略这个值##总结##设为1当然是最安全的,
- 但性能页是最差的 (相对其他两个参数而言, 但不是不能接受)如果对数据一致性和完整性要求不高,
- 完全可以设为2,
- 如果只最求性能,
- 例如高并发写的日志服务器,
- 设为0来获得更高性能#innodb_log_buffer_size = 2M##此参数确定些日志文件所用的内存大小,
- 以M为单位缓冲区更大能提高性能,
- 但意外的故障将会丢失数据MySQL开发人员建议设置为1 - 8M之间#innodb_log_file_size = 32M##此参数确定数据日志文件的大小,
- 更大的设置可以提高性能,
- 但也会增加恢复故障数据库所需的时间#innodb_log_files_in_group = 3##为提高性能,
- MySQL可以以循环方式将日志文件写到多个文件推荐设置为3#innodb_max_dirty_pages_pct = 90##innodb主线程刷新缓存池中的数据,
- 使脏数据比例小于90 % #innodb_lock_wait_timeout = 120##InnoDB事务在被回滚之前可以等待一个锁定的超时秒数InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务InnoDB用LOCK TABLES语句注意到锁定设置默认值是50秒#bulk_insert_buffer_size = 8M##批量插入缓存大小,
- 这个参数是针对MyISAM存储引擎来说的适用于在一次性插入100 - 1000 + 条记录时,
- 提高效率默认值是8M可以针对数据量的大小,
- 翻倍增加#myisam_sort_buffer_size = 8M##MyISAM设置恢复表之时使用的缓冲区的尺寸,
- 当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序MyISAM索引分配的缓冲区#myisam_max_sort_file_size = 10G##如果临时文件会变得超过索引,
- 不要使用快速排序索引方法来创建一个索引注释: 这个参数以字节的形式给出#myisam_repair_threads = 1##如果该值大于1,
- 在Repair by sorting过程中并行创建MyISAM表索引 (每个索引在自己的线程内)#interactive_timeout = 28800##服务器关闭交互式连接前等待活动的秒数交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端默认值: 28800秒 (8小时)#wait_timeout = 28800##服务器关闭非交互连接之前等待活动的秒数在线程启动时,
- 根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,
- ##取决于客户端类型 (由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)参数默认值: 28800秒 (8小时)##MySQL服务器所支持的最大连接数是有上限的,
- 因为每个连接的建立都会消耗内存,
- 因此我们希望客户端在连接到MySQL Server处理完相应的操作后,
- ##应该断开连接并释放占用的内存如果你的MySQL Server有大量的闲置连接,
- 他们不仅会白白消耗内存,
- 而且如果连接一直在累加而不断开,
- ##最终肯定会达到MySQL Server的连接上限数,
- 这会报'too many connections'的错误对于wait_timeout的值设定,
- 应该根据系统的运行情况来判断##在系统运行一段时间后,
- 可以通过show processlist命令查看当前系统的连接状态,
- 如果发现有大量的sleep状态的连接进程,
- 则说明该参数设置的过大,
- ##可以进行适当的调整小些要同时设置interactive_timeout和wait_timeout才会生效# [mysqldump]#quick#max_allowed_packet = 16M#服务器发送和接受的最大包长度# [myisamchk]#key_buffer_size = 8M#sort_buffer_size = 8M#read_buffer = 4M#write_buffer = 4M
9 启动 mysql mysqld_safe user=mysql 10 登录 mysql mysql -u root -p 这一步输入前面步骤中生成的密码 11 进入 mysql shell 修改密码 mysql»set password=password(1234);
12 加入开机启动 chkconfig add mysql chkconfig mysql on
MySQL 服务搭建(RPM 包安装)
一: 需要的 rpm 包:
- mysql-community-common-5.7.21-1.el7.x86_64
- mysql-community-libs-5.7.21-1.el7.x86_64
- mysql-community-client-5.7.21-1.el7.x86_64
- mysql-community-server-5.7.21-1.el7.x86_64
二: 安装
将上面的包上传到服务器, 注意上传过程中请勿使用 ASCLL 上传, 否则安装报错
依次安装上面 4 个 rpm 包
rpm -ivh xxxx
安装过程可能会出现 mariadb-lib 冲突(会产生冲突), 如有冲突要先 yum remove 卸载 mariadb 要在安装集群之前处理, 因为集群对这个包有依赖
ntpd 服务搭建
没有外网环境, 可以使用本地 centos 的 ios yum 源
yum install ntp
修改 ntp 的配置文件(红色表示需要修改的地方) vim /etc/ntp.conf
- # For more information about this file, see the man pages
- # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
- driftfile /var/lib/ntp/drift
- # Permit time synchronization with our time source, but do not
- # permit the source to query or modify the service on this system.
- restrict default nomodify notrap nopeer noquery
- # Permit all access over the loopback interface. This could
- # be tightened as well, but to do so would effect some of
- # the administrative functions.
- restrict 127.0.0.1
- restrict ::1
- # Hosts on local network are less restricted.
- #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
- # Use public servers from the pool.ntp.org project.
- # Please consider joining the pool (http://www.pool.ntp.org/join.html).
- # 不使用外网服务
- #server 0.centos.pool.ntp.org iburst
- #server 1.centos.pool.ntp.org iburst
- #server 2.centos.pool.ntp.org iburst
- #server 3.centos.pool.ntp.org iburst
- # 开启本地时间服务
- server 127.127.1.0
- fudge 127.127.1.0 stratum 10
- # 以下 ip 换成自己时间服务器的 ip
- restrict 192.168.72.22 mask 255.255.255.0 nomodify notrap
- #broadcast 192.168.1.255 autokey # broadcast server
- #broadcastclient # broadcast client
- #broadcast 224.0.1.1 autokey # multicast server
- #multicastclient 224.0.1.1 # multicast client
- #manycastserver 239.255.254.254 # manycast server
- #manycastclient 239.255.254.254 autokey # manycast client
- # Enable public key cryptography.
- #crypto
- includefile /etc/ntp/crypto/pw
- # Key file containing the keys and key identifiers used when operating
- # with symmetric key cryptography.
- keys /etc/ntp/keys
- # Specify the key identifiers which are trusted.
- #trustedkey 4 8 42
- # Specify the key identifier to use with the ntpdc utility.
- #requestkey 8
- # Specify the key identifier to use with the ntpq utility.
- #controlkey 8
- # Enable writing of statistics records.
- #statistics clockstats cryptostats loopstats peerstats
- # Disable the monitoring facility to prevent amplification attacks using ntpdc
- # monlist command when default restrict does not include the noquery flag. See
- # CVE-2013-5211 for more details.
- # Note: Monitoring will not be disabled with the limited restriction flag.
- disable monitor
配置文件修改好之后, 启动 ntp 服务 service ntp start chkconfig ntp on
ntpd 服务测试
在另外的机器上 (一般是集群中另外的机器) 测试是否可以与 ntp 服务端的机器同步
ntpdate $hostname
测试成功后需要在 / etc/crontab 中添加自动时间同步
echo */10 * * * * root ntpdate $hostname»/etc/crontab
hdfs-ftp 服务搭建
Previous
Ambar 搭建集群的维护
来源: https://www.thinksaas.cn/group/topic/839310/