1,软件 MySQL版本:mysql5。7。29 下载链接:https:downloads。mysql。comarchivescommunity 注:建议使用迅雷下载,速度较快 2,系统挂盘查看磁盘情况lsblk查看剩余情况vgs2个步骤:1、创建逻辑分区lvcreateL140Gnlvmysqlrootvg2、格式化分区mountdevrootvglvmysqlhomemysql 更多命令及自动挂盘请参考:https:blog。csdn。netdongyuxu342719articledetails827023573,调整磁盘IO调度规则查看:dmesggrepschedulerCentOS7io调度规则默认为deadline,所以不需要修改4,配置内核参数vimetcsysctl。conf配置交换区vm。swappiness1保存后使其生效sysctlp5,MySQL用户ulimit设置 操作系统对mysql用户注意以下参数的设置,该设置为必须的设置:vimetcsecuritylimits。dmysql。confmysqlsoftnofile65535mysqlhardnofile65535mysqlsoftnproc65535mysqlhardnproc655356,防火墙及seLinux查看当前防火墙状态firewallcmdstate关闭防火墙systemctlstopfirewalld。servicesystemctldisablefirewalld。service关闭selinux使用setenforce命令可以切换SELinux应用模式enforcing或1:强制模式permissive或0:允许模式setenforce0vimetcselinuxconfig将SELINUXenforcing更改为SELINUXdisabledsedisSELINUXenforcingSELINUXdisabledgetcselinuxconfigcatetcselinuxconfig显示结果为SELINUXdisabledSELINUXTYPEtarge7,关闭numa 关闭numa,解决mysql服务器swap严重以及内存泄漏的问题,需要注意的是Mysql5。7。9引入了iinnodbnumainterleave参数,MySQL自己解决了内存分类策略的问题前提是服务器支持numa,也就是说如果使用MySQL5。7。9之后的版本,可以不用关闭服务器的numa修改grab,conf1、在etcdefaultgrub文件中修改kernel行:vietcdefaultgrubGRUBCMDLINELINUX后添加numaoff2、重建配置文件grub2mkconfigoetcgrub2。cfg3、重启操作系统reboot8,卸载旧版本rpm包rpmqagrepmysqlirpmenodepsmsyqlxxx5。1。。xx8664把旧版本的mysql配置文件移动mvetcmy。confetcmy。conf。dateYmd9,安装mysql创建存放mysql的目录mkdiroptmysqlbase找到存放mysqltar包的目录cdhomemysqlusertarzxfmysql5。7。29linuxglibc2。12x8664。tar。gzCoptmysqlbasemvoptmysqlbasemysql5。7。29linuxglibc2。12x8664optmysqlbasemysql5。7。2910,创建MySQL运行用户 组名:mysql 组id:20000 用户名:mysql 用户id:20000 用户home目录:homemysqlgroupaddg20000mysqluseraddu20000dhomemysqlgmysqlmmysqlpasswdmysql11,创建相关文件系统mkdirhomemysqldatacdhomemysqldatamkdirmysqltmp存放临时数据mkdirmysqlbackup存放数据库备份mkdirpmysqldata4306存放数据mkdirpmysqllogmysqlbin存放binlogmkdirmysqllogrelaybinrelaylog的存放位置mkdiroptmysql存放mysql介质chownmysql。mysqlRhomemysqlchownmysql。mysqlRoptmysqlbasechownmysql。mysqlRoptmysql12,修改my。cnf 在optmysqlbasemysql5。7。29下创建my。cnfsumysql切换用户cdoptmysqlbasemysql5。7。29vimy。cnf如何有上传的my。cnf,直接cp过来,命令是cphomemy。cnfoptmysqlbasemysql5。7。29〔client〕port4306sockethomemysqldatamysqldatamysql。sockdefaultcharactersetutf8mb4〔mysql〕defaultcharactersetutf8mb4〔mysqld〕serverid8008复制ID,主备机保持唯一port3306usermysqlbasediroptmysqlbasemysql5。7。29datadirhomemysqldatamysqldata4306tmpdirhomemysqldatamysqltmpsockethomemysqldatamysqldatamysql。sockpidfilemysqld。piddefaultstorageengineINNODBlowercasetablenames1transactionisolationREADCOMMITTEDcharactersetclienthandshakeFALSEcharactersetserverutf8mb4collationserverutf8mb4unicodeciinitconnectSETNAMESutf8mb4connectionbacklog400maxconnections1000interactivetimeout28800waittimeout29900slavenettimeout300skipnameresolveonbinloglogbinhomemysqldatamysqllogmysqlbinmysqlbin。indexrelayloghomemysqldatamysqllogrelaybinrelaybin。indexexpirelogsdays7binlogcachesize8MbinlogformatROWrelaylogpurge1logbintrustfunctioncreators1binloggroupcommitsyncnodelaycount20binloggroupcommitsyncdelay10replicagtidmodeonenforcegtidconsistency1logslaveupdates1slaveparalleltypeLOGICALCLOCKslaveparallelworkers8masterinforepositoryTABLErelayloginforepositoryTABLEslavepreservecommitorderonSemisyncConfigpluginloadvalidatepassword。rplsemisyncmastersemisyncmaster。rplsemisyncslavesemisyncslave。sorplsemisyncmasterenabled0rplsemisyncslaveenabled1rplsemisyncmastertimeout10000rplsemisyncmasterwaitforslavecount1rplsemisyncmasterwaitnoslave0rplsemisyncmasterwaitpointAFTERSYNC默认就是AFTERSYNCpasswordpluginvalidatepasswordpolicySTRONGvalidatepasswordFORCEPLUSPERMANENTcacheslimitsbulkinsertbuffersize8Minnodbbufferpoolsize4G适当调整,可以选取物理内存的70innodbbufferpoolinstances8innodblogbuffersize32Minnodbsortbuffersize4Mjoinbuffersize4Msortbuffersize4Mkeybuffersize16Minnodbmaxdirtypagespct50maxallowedpacket128Mmaxheaptablesize16Mreadbuffersize1M推荐816G配1Mreadrndbuffersize32Mopenfileslimit10240tabledefinitioncache4096querycachetype0tableopencache4096tableopencacheinstances16innodbtempdatafilepathibtmp1:12M:autoextend:max:20Gthreadthreadcachesize256innodbthreadconcurrency128innodbiocapacity5000innodbiocapacitymax10000innodbwriteiothreads8innodbreadiothreads8推荐核数的两倍innodbpurgethreads4innodbpagecleaners4innodbloginnodbflushmethodODIRECTinnodbautoextendincrement128innodbflushlogattrxcommit1innodbprintalldeadlockssyncbinlog1innodbfileinnodbdatafilepathibdata:2G:autoextendinnodbfilepertable1tmptablesize16Minnodblogfilesize2048Minnodbundotablespaces3innodbundologtruncate1innodbonlinealterlogmaxsize1Gloggingslowquerylog1logtimestampsSYSTEMlogerrormysqlerror。logslowquerylogfilemysqlslow。loglcmessagesdiroptmysqlbasemysql5。7。29shareRecommendedinstandardMySQLsetupsqlmodeNOENGINESUBSTITUTION,STRICTTRANSTABLESperformanceschemasettingsperformanceschemainstrumentmemoryCOUNTEDperformanceschemadigestssize40000performanceschemamaxtablehandles40000performanceschemamaxtableinstances40000performanceschemamaxsqltextlength4096performanceschemamaxdigestlength4096 其中主库、从库部分不同主库serverid8008复制ID,主备机保持唯一SemisyncConfigrplsemisyncmasterenabled1rplsemisyncslaveenabled0从库serverid8009复制ID,主备机保持唯一SemisyncConfigrplsemisyncmasterenabled0rplsemisyncslaveenabled1从库serverid8010复制ID,主备机保持唯一SemisyncConfigrplsemisyncmasterenabled0rplsemisyncslaveenabled113,初始化使用mysql用户optmysqlbasemysql5。7。29binmysqlddefaultsfileoptmysqlbasemysql5。7。29my。cnfinitializeusermysql14,修改root密码 在homemysqluserdatamysqldata4306mysqlerror。log中查看初始化完成后生成的随机密码,记得保存下来,修改root密码时使用。optmysqlbasemysql5。7。29binmysqldsafedefaultsfileoptmysqlbasemysql5。7。29my。cnf建立软连接lnshomemysqldatamysqldatamysql。socktmpmysql。sock配置一下mysql的环境变量vietcprofile。dmysql。shmysql。sh添加如下内容MYSQLHOMEoptmysqlbasemysql5。7。29PATHPATH:MYSQLHOMEbinexportMYSQLHOMEPATH让配置文件生效sourceetcprofile登录mysqlmysqlurootp修改密码alteruserrootlocalhostidentifiedby1qazZSE39;;二,搭建复制1,主库建立复制用户 在主库上运行如下命令,新建用户repl并授权createuserrepl182。identifiedby1qazZSE39;;grantreplicationslaveon。torepl182。; 从安全方面考虑,可以对ip进行范围限制,不适用2,主库操作使用场景第一次搭建主从数据库时,用于主库的初始化binglog操作;展示binlog日志文件mysqlshowmasterstatusG3,从库操作3。1,在从库建立复制通道mysqlchangemastertomasterhost192。168。222。224,masterport3306,masteruserrepl,masterpassword1qazZSE39;,masterautoposition1;3。2,启动复制 在从库上启动复制并检查slave状态mysqlshowslavestatusG;查看SlaveIOState、SlaveSQLRunning3。3,查看主从库半复制同步开启状态 主库:VariablenameValueRplsemisyncmasterstatuson 从库:VariablenameValueRplsemisyncmasterstatuson3。4注意问题 注:如果3。2步骤出错,在重新操作3。1之前,需要使用以下命令重置:4,测试4。1,主节点插入数据 主节点建立数据库,并插入一条数据:createtabletesttb(idint(3),namechar(10));insertintotesttbvalues(001,hi);4。2,从节点查询数据三,安装PerconaToolkit维护工具 当前选择的版本是2。2版本,版本号为perconatoolkit2。2。201,安装rpm包之前需要安装如下依赖包cdhomemysqluserPerconaToolkitdepend批量安装依赖rpmUvhforcenodepsrpmcdhomemysqluserPerconaToolkit安装PerconaToolkitrpmivhperconatoolkit2。2。201。noarch。rpm验证是否安装成功ptquerydigesthelp四,安装perconaxtrabackup 当前选择的版本是2。4。7版本,版本号为perconaxtrabackup2。4。7,tarzxvfperconaxtrabackup2。4。7Linuxx8664。tar。gzCoptmvperconaxtrabackup2。4。7Linuxx8664perconaxtrabackup2。4。7lnsoptperconaxtrabackup2。4。7binusrbinxtrabackupversion验证版本