vmware-debian-mysql镜像(数据库复制)安装与管理-精华20090426_第1页
vmware-debian-mysql镜像(数据库复制)安装与管理-精华20090426_第2页
vmware-debian-mysql镜像(数据库复制)安装与管理-精华20090426_第3页
vmware-debian-mysql镜像(数据库复制)安装与管理-精华20090426_第4页
vmware-debian-mysql镜像(数据库复制)安装与管理-精华20090426_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

九阳神功系列vmware_debian_mysql镜像(数据库复制)作者Liukansoft目录一、安装debian 21.1vmware准备 21.2vmware新建虚拟机 21.3vmwaredebian安装验证 2二、安装ftp 32.1改/etc/apt/sources.list 32.2安装vsftpd 32.3新建用户whoever和/etc/vsftpd.chroot_list文件 4三、安装mysql 4四、架设镜像(mysql数据库复制) 54.1架设镜像的前提 54.2主库/etc/f文件修改 54.3主库建账号、锁表、全备份 54.4从库/etc/f文件修改 64.5主库做快照,即操作系统层面tar整个数据目录 64.6上述gz文件ftp至备服务器 64.7备服务器启动、恢复数据库、设为SLAVE 74.8部分数据库、数据表的镜像(复制) 84.9主备架构(镜像或者说数据库复制主备机)的验证 84.10最实用的架mysql镜像(复制)的步骤 9五、镜像的mysql,日常管理。 95.1主库管理 95.2从库管理 105.3镜像中的mysql主从不同步 115.4镜像中的mysql二进制日志安全地清理 115.5镜像中的mysql错误日志安全地清理 125.6镜像中的mysql慢日志安全地清理 12六、镜像的mysql的异动管理 126.1不想镜像了 12七、互为镜像的mysql 137.1主服务器设为SLAVE,作备库的备库。 137.2双向复制的镜像环境,备份与恢复 147.3两台镜像服务器虚拟出一个服务IP 14一、安装debian

1.1vmware准备为了vmware中的debian能dhcp:vmware在windows网上邻居属性中的两个虚拟网卡:设为dhcp.c:>ipconfig/renew

1.2vmware新建虚拟机vmware中:operatingsystem设为:Linux(Ubuntu)或者otherlinux.Networkconnection设为:Usebridgednetworkingdiskcapacity设为:10G(大于10G好象很容易坏)内存设为:680MCD-ROM:UseISOimage:debian-40r0-i386-CD-1注意,安装程序一定要顺利走过DHCPdetect,否则,考虑重建、另命新名debian虚拟机、重启windowsOS等。安装过程中:键入hostname,domainname(如)Guided-useentiredisk...Separate/home,/usr,/var,and/tmppartitions(磁盘空间划分)除Webserver外,各组件全都安装。因为apache等下再装新版本。Modifysmb.conftouseWINSsettingsfromDHCP?选YESXserver:设为1280X768InstalltheGRUBbootloadtothemasterbootrecord?选YESdebian图形界面的进入:startx回车即可。

1.3vmwaredebian安装验证以root身份进入terminal,#ifconfig如果能自动分到一个与主机同一网段的IP。说明OK。二、安装ftp2.1改/etc/apt/sources.listdebian1:/etc/apt#vimsources.list/////////////deb/debian/etchmaincontribdeb-src/debian/etchmaincontribdeb/etch/updatesmaincontribdeb-src/etch/updatesmaincontrib2.2安装vsftpd//////////////更新debianOS数据库debian1:/etc/apt#apt-getupdate///看有没有vsftp程序包可以用来安装,有可能会出错,但没问题,照样可以下载debian1:/etc/apt#apt-cachesearchvsftpd////下载vsftpd程序:debian1:/etc/apt#apt-getinstallvsftpddebian1:/etc/apt#vim/etc/vsftpd.conflisten=YESanonymous_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESdirmessage_enable=YESchown_uploads=YESchown_username=whoeverascii_upload_enable=YESascii_download_enable=YESchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_listls_recurse_enable=YES///////////////etc/init.d/vsftpdrestart重启ftpdebian1:/etc/apt#netstat-an|grep21查ftp21号端口是否已工作2.3新建用户whoever和/etc/vsftpd.chroot_list文件尝试在本虚拟机上登录ftp:debian1:/etc/apt#ftp5(localhost)结果报错:Connectedto5.500OOPS:vsftpd:cannotlocateuserspecifiedin'chown_username':whoever那么:debian1:/etc/apt#useradd-groot-d/home/whoeverwhoever////再尝试登录ftp:debian1:/etc/apt#ftp5(localhost)还是报错:couldnotopenchroot()listfile:/etc/vsftpd.chroot_list那么:debian1:/etc/#vimvsftpd.chroot_list在/etc/目录下#root#///OK!!!三、安装mysql通过ftp把mysql-5.0.45-linux-i686.tar.gz传入debian中(/home/oracle)#cpmysql-5.0.45-linux-i686.tar.gz/usr/local/#groupaddmysql

#useraddmysql-gmysql#passwdmysql#tarxfvmysql-5.0.45-linux-i686.tar.gz#mvmysql-5.0.45-linux-i686mysql#cp/usr/local/mysql/support-files/f/etc/f#cd/usr/local/mysql./scripts/mysql_install_db--user=mysql安装#chown-Rroot.#chown-Rmysqldata#chown-Rmysqldata/.#chgrp-Rmysql.#/usr/local/mysql/bin/mysqld_safe--user=mysql&如果不能启动,查看/usr/local/mysql/data/主机名.err在另一虚拟机也装上mysql主机上建一库,建一表,插数据(用于等下的镜像验证)。四、架设镜像(mysql数据库复制)4.1架设镜像的前提……所有参与镜像的数据库,各表都要有主键,否则可能一夜间数据全丢。……有瞬间大规模DML操作的应用,其数据库不适合做镜像,因为当大规模DML时,如果是单机,只需10分钟跑完所有过程,但镜像则要1小时,还很可能死机,mysql会死掉。所以,象报表这样的数据库不适合做镜像,只能采用定时的增量恢复。4.2主库/etc/f文件修改主库:[mysqld]server-id=1log-bin=/usr/local/mysql/log-bin/bin_db指定mysql二进制日志文件存放的路径/usr/local/mysql/log-bin/,指定二进制文件名的前缀bin_db(全名是形如:bin_db.000001),指定它即表启用二进制日志//////////////////////重启主库服务器的mysql.4.3主库建账号、锁表、全备份主机建一用户,用于从备机登录到主机mysql>grantreplicationslave,reload,super,selecton*.*tolk@"%"identifiedby'lk';mysql>flushprivileges;/////用户是否建好,可在从机上验证://////usr/local/mysql/bin/mysql–ulk–p–h主机IP能在从机上登录主机,则OK,例:#/usr/local/mysql/bin/mysql-ulk-plk-h40/////主机中执行下面语句:mysql>flushtableswithreadlock;此时不能写数据库了mysql>showmasterstatus;记下fileposition字段值形如:masterbin.00000198#mysql>exit#mysqladmin–uroot–ppwdshutdown停掉主库mysql,以便OS考贝。4.4从库/etc/f文件修改从库为了各项配置与主库一致(尤其是innodb方面的参数必须一致,否则就乱),需把主库f考至从机/etc/目录,且改一个参数:[mysqld]server-id=2////OK锦上添花1:为了更好的安全性,让从机的非supper级用户即普通用户不能直接在备机上做任何DML、DDL操作,可以加入:read-only=1中间是中划线////等下进入备机的mysql后,可能通过以下方式验证是否是真的readonly了:mysql>showvariables;…read_onlyON中间是下划线。对于普通用户已是readonly了…但一般用处不大,因为一般程序都通过supper级用户连mysql,还是可以DML、DDL。锦上添花2:transaction_isolation=READ-UNCOMMITTED////////把从库的事务隔离级别设为它(READ-UNCOMMITTED即脏读),可以防止从库的读与从库的应用从主库来的事务日志之间抢夺table锁的冲突。4.5主库做快照,即操作系统层面tar整个数据目录主机中:#cd/usr/local/mysql#tarcvzfmysqldata.gzdata(把data目录全tar下)4.6上述gz文件ftp至备服务器备机中:先停备机mysql:#/usr/local/mysql/bin/mysqladmin–uroot–pshutdown#ftp主服务器名(IP)ftp>binftp>getdata.gzdata.gz文件考至/usr/local/mysql/下,//////不需要了:再把主机的数据库全备份文件也ftp过来#mvdatadata_pre(原来data/的改名)#tarxvzfdata.gz#cddata#find.|grep#find.|grep找到后全删。4.7备服务器启动、恢复数据库、设为SLAVE备机上,启动mysql:#/usr/local/mysql/bin/mysqld_safe–user=mysql&如果以前是别的机的slave,则:mysql>resetslave;mysql>stopslave;设为slave:mysql>CHANGEMASTERTO->MASTER_HOST='4',->MASTER_USER='repl', ->MASTER_PASSWORD='password_for_repl', ->MASTER_LOG_FILE='masterbin.000001',4.3节mysql>showmasterstatus;的数据 ->MASTER_LOG_POS=98;以上两参数值对应4.1节showmasterstatus;所得的值。QueryOK,0rowsaffected(0.05sec)备服务器设为SLAVE:mysql>startslave;适应于所有类型mysql表,如innodb、myISAM表等。进入/usr/local/mysql/data/中,看是不是新生成了一个文件:有才正常。且此文本文件中的内容与上面几行配置的值是一样的。mysql>showslavestatus\G从库中看slave相关属性的值。有才正确。/////////////////////OK大功告成!别忘了,主库中:#/usr/local/mysql/bin/mysqld_safe–user=mysql&因为先前被关掉服务了mysql>unlocktables;--此时又开始能写数据库但此时不能忙着启动相应的web、应用服务器,不能对外提供服务。因为还没验证好。4.8部分数据库、数据表的镜像(复制)//////如果是mysql数据库服务器上的所有库、表都参与镜像,此节完全跳过,直接进入4.9节。备服务器先停mysql:#/usr/local/mysql/bin/mysqladmin–uroot–pshutdown备服务器再以启某库某表复制、禁某库某表复制的选项,启动mysql:////禁某一库:#/usr/local/mysql/bin/mysqld_safe--user=mysql--replicate_ignore_db=db1&////禁某两库:#/usr/local/mysql/bin/mysqld_safe--user=mysql--replicate_ignore_db=db1--replicate_ignore_db=db2&也可在f配置文件中设定:replicate-do-db=db1#同步的数据库,如果有多个数据库,每个数据库一行replicate-do-db=db2#同步db2数据库replicate-ignore-db=mysql#不同步的数据库,如果有多个数据库,每个数据库一行///OK了!就这么简单!4.9主备架构(镜像或者说数据库复制主备机)的验证A方式验证,主库中:mysql>usetest;进入test数据库mysql>createtabletb1(c1char(10));mysql>insertintotb1values(‘aa’);从库中看有无反应:mysql>usetest;mysql>showtables;看是否有相应的新表存在,存在才是对的,因为镜像就是自动复制主库的东西。mysql>select*fromtb1;看到的记录集应该与主服务器完全一致才是。此时可以启动相应的web、应用服务器,开始对外提供服务。B验证方式:主库:mysql>showmasterstatus\G;留意其:File:bin.000014Position:615281967从库马上:mysql>showslavestatus\G;留意其:Master_Log_File:bin.000014Read_Master_Log_Pos:615281967主从在此两值上能完全对应,或从库因后敲,所以Read_Master_Log_Pos略大。而从库的:Last_Errno:0非0则已不同步Last_Error:非空则有某处同步错4.10最实用的架mysql镜像(复制)的步骤1、屏蔽告警2、在40.6窗口一上锁住所有表:FLUSHTABLESWITHREADLOCK;3、在40.6窗口二上备份5个数据库,/usr/local/mysql/bin/mysqldump-uroot-p'rOOt@ys@))&'--single-transaction-R--master-data=2--databasesDev_authserverDev_dataserverkd_adminmysqlyoushangportalys_org>mysql_db_mirror_20090901.sql并记下同步位置:mysql>showmasterstatus;记下fileposition字段值形如:masterbin.000001984、在40.8上恢复5个数据库。5、在40.6窗口一上解锁表:UNLOCKTABLES6、配置同步。7、修改原备份IP为40.208、40.8加上40.5的IP地址。五、镜像的mysql,日常管理。5.1主库管理主库因为没有任何设置,所以主库无需任何特别的管理。例:停止再启动主库(类比主服务器死机、重启等情况)#/usr/local/mysql/bin/mysqladmin–uroot–pshutdown#/usr/local/mysql/bin/mysqld_safe–user=mysql&进入主库并作DML操作:#/usr/local/mysql/bin/mysql–uroot–pmysql>usetest;mysql>insertintotb1values(‘bb’);进入从机的mysql看是否已正常把主库的最新信息复制过来:#/usr/local/mysql/bin/mysql–uroot–pmysql>usetest;mysql>select*fromtb1;OK,结果集中出现了最新的记录行’bb’.同样地,可在主库上作DDL操作,看从库的反应,是否与主库同步了。5.2从库管理日常查看:Mysql>showslavestatus\G如果Last_Errno不为0,Last_Error字段显示有东西,那就是有问题了。其实从库也不用进行任何特别的管理工作。例,停从库,主库作DML、DDL操作,再启从库(类比从库各类故障,未能与主库持续地通信):从库:#/usr/local/mysql/bin/mysqladmin–uroot–pshutdown确认从库mysql已停:#netstat–antl|grep3306应该找不到相应的行了主库:mysql>usetest;mysql>createtabletb2(c1char(10));mysql>insertintotb2values(‘111’);从库再启mysql:#/usr/local/mysql/bin/mysqld_safe–user=mysql&进入从机的mysql#/usr/local/mysql/bin/mysql–uroot–pmysql>usetest;mysql>showtables;刚在主库建的表tb2看到了!mysql>select*fromtb2;刚在主库新表tb2加入的数据看到了!在从库的错误日志中,出现类似的:0807105:44:29[Warning]Neither--relay-lognor--relay-log-indexwereused;soreplicationmaybreakwhenthisMySQLserveractsasaslaveandhashishostnamechanged!!Pleaseuse'--relay-log=/usr/local/mysql/data/ysdb-B-relay-bin'toavoidthisproblem.0807105:44:29[Note]/usr/local/mysql/bin/mysqld:readyforconnections.……这是正常的。不必理会。太简了。呵呵。。。。soeasy!5.3镜像中的mysql主从不同步从库中:SQL>showslavestatus\G如果有Error,则停从库的slave,等两分钟再启slave:SQL>stopslave;1--2分钟后又启从库slave:SQL>startslave;如果还不行,如果是主键重复造成不能同步,即从库相应表已有相应记录行,又要应用与此记录行主键相重复的insert语句,则可跳过当前的DML:SQL>stopslave;SQL>setglobalsql_slave_skip_counter=1;SQL>startslave;有可能要反复两次才能OK。直至SQL>showslavestatus\G没有错才行。可以考虑停从库slave功能半天时间。5.4镜像中的mysql二进制日志安全地清理自动:vim/etc/f【msyqld】

expire_logs_day=20保留近20天的日志文件,系统自动清理手动:#date获服务器当前时间mysql>PURGEMASTERLOGSBEFORE'2008-09-2212:00:00';此时间是当前删除动作执行的前一天。因为隔了一天时间,相关日志早已同步至slave机了。是安全的。如果有slave服务器正在读取我们正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。自动清理二进制日志的shell脚本:##########Startclearthebinlogbeforefivedays:syear=`date-d'-5day'+%Y`smonth=`date-d'-5day'+%m`sday=`date-d'-5day'+%d`sdate=`echo"$syear"-"$smonth"-"$sday""23:59:59"`echo$sdate/usr/local/mysql/bin/mysql-uroot-p020674<<EOFPURGEMASTERLOGSBEFORE'$sdate'EOF####END注意从库日志删除:有可能从库的二进制日志用上面的语句删不掉,此时可以直接删操作系统文件:进入binlog所在目录,mv相关文件至另一目录,如果没有任何问题,过两天删掉。#mvbin.0*./prelog_dir/一次移多文件。不可随意直接删除binlog!,小心mysql起不来!5.5镜像中的mysql错误日志安全地清理一般错误日志在/usr/local/mysql/data/下,文件名为:机器名.err此文件名不可随意删除。只能#tail–n100机器名.err>机器名.err以瘦身。实际上机器名.err会变成0字节。5.6镜像中的mysql慢日志安全地清理文件名不能删。否则mysql可能下次起动不了。只能#tail–n100slow.log>slow.log以瘦身。实际上slow.log会变成0字节。六、镜像的mysql的异动管理6.1不想镜像了主库因为没作任何设置,所以可以不动,当然,为镜像而建的数据库用户,可以delete掉它。从库改主库(主库被洪水冲了),从库中:Mysql>showslavestatus;如果不是”Emptyset……”,表明此库为slave库。mysql>stopslave;mysql>resetslave;清理从库的slave.重启mysqlmysql>showslavestatus;什么都看不到了,清掉了。/////////////此时从库彻底摘掉从库、备机的帽子,作为独立的主机了。如果上述方法出问题,可以再考虑下面的,下面的方法并不是很可取:mysql>stopslave;#/usr/local/mysql/bin/mysqladmin–uroot–pshutdown#cd/usr/local/mysql/data#mv_pre#mv_pre重启mysql.七、互为镜像的mysql7.1主服务器设为SLAVE,作备库的备库。其实只需在4.7节的基础上做以下一步就好:主库机上先确定没有从库的相关配置:Mysql>showslavestatus;输出结果要是Emptyset….才是对的。否则执行6.1节的操作.或者:Mysql>stopslave;备库机上获得下面信息:Mysql>showmasterstatus;mysql-bin.000007383378记下从库logfile和logpos以便下面用。主库机,设为备库的备库(slave):mysql>CHANGEMASTERTO->MASTER_HOST='6',一定要是从库的IP,别写错了。->MASTER_USER='repl', ->MASTER_PASSWORD='password_for_repl', ->MASTER_LOG_FILE='mysql-bin.000007', ->MASTER_LOG_POS=383378;以上两参数值对应本节先前showmasterstatus;所得的值。QueryOK,0rowsaffected(0.05sec)mysql>startslave;进入/usr/local/mysql/data/中,看是不是新生成了一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论