1、目 录一、安装debian21.1 vmware准备21.2 vmware新建虚拟机21.3 vmware debian安装验证2二、安装ftp32.1 改/etc/apt/sources.list32.2 安装vsftpd32.3新建用户whoever和/etc/vsftpd.chroot_list文件4三、安装mysql4四、架设镜像(mysql数据库复制)54.1架设镜像的前提54.2主库/etc/f文件修改54.3主库建账号、锁表、全备份54.4从库/etc/f文件修改64.5主库做快照,即操作系统层面tar整个数据目录64.6上述gz文件ftp至备服务器64.7备服务器启动、恢复数据
2、库、设为SLAVE74.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七、互为镜像的mysql137.1主服务器设为SLAVE,作备库的备库。137.2双向复制的镜像环境,备份与恢复147.3两台镜像服务器虚拟出
3、一个服务IP14一、安装debian1.1 vmware准备为了vmware中的debian能dhcp:vmware 在windows网上邻居属性中的两个虚拟网卡:设为dhcp. c:ipconfig /renew1.2 vmware新建虚拟机vmware中:operating system设为: Linux (Ubuntu) 或者other linux.Network connection设为: Use bridged networkingdisk capacity设为: 10G (大于10G好象很容易坏)内存设为:680MCD-ROM:Use ISO image:debian-40r0-i
4、386-CD-1注意,安装程序一定要顺利走过DHCP detect,否则,考虑重建、另命新名debian虚拟机、重启windows OS等。安装过程中:键入 hostname, domain name (如)Guided - use entire disk.Separate /home,/usr,/var, and /tmp partitions (磁盘空间划分)除Web server外,各组件全都安装。因为apache等下再装新版本。Modify smb.conf to use WINS settings from DHCP?选YESX server:设为1280X768Install th
5、e GRUB boot load to the master boot record? 选YESdebian图形界面的进入:startx 回车即可。1.3 vmware debian安装验证以root身份进入terminal,# ifconfig如果能自动分到一个与主机同一网段的IP。说明OK。二、安装ftp2.1 改/etc/apt/sources.listdebian1:/etc/apt# vim sources.list/deb etch main contribdeb-src etch main contribdeb http:/security.debian.org/ etch/up
6、dates main contribdeb-src http:/security.debian.org/ etch/updates main contrib2.2 安装vsftpd/更新debian OS 数据库debian1:/etc/apt# apt-get update/看有没有vsftp程序包可以用来安装,有可能会出错,但没问题,照样可以下载debian1:/etc/apt# apt-cache search vsftpd/下载vsftpd程序:debian1:/etc/apt# apt-get install vsftpddebian1:/etc/apt# vim /etc/vsft
7、pd.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_
8、recurse_enable=YES/etc/init.d/vsftpd restart -重启ftpdebian1:/etc/apt# netstat -an|grep 21 -查ftp 21号端口是否已工作2.3新建用户whoever和/etc/vsftpd.chroot_list文件尝试在本虚拟机上登录ftp:debian1:/etc/apt# ftp 192.168.22.55(localhost)结果报错: Connected to 192.168.22.55. 500 OOPS: vsftpd: cannot locate user specified in chown_usern
9、ame:whoever那么 :debian1:/etc/apt# useradd -g root -d /home/whoever whoever/再尝试登录ftp:debian1:/etc/apt# ftp 192.168.22.55(localhost)还是报错:could not open chroot() list file:/etc/vsftpd.chroot_list那么:debian1:/etc/# vim vsftpd.chroot_list -在/etc/目录下#root#/OK!三、安装mysql通过ftp把mysql-5.0.45-linux-i686.tar.gz传入d
10、ebian中(/home/oracle)# cp mysql-5.0.45-linux-i686.tar.gz /usr/local/# groupadd mysql# useradd mysql -g mysql#passwd mysql # tar xfv mysql-5.0.45-linux-i686.tar.gz# mv mysql-5.0.45-linux-i686 mysql# cp /usr/local/mysql/support-files/my-f /etc/f# cd /usr/local/mysql./scripts/mysql_install_db -user=mysq
11、l -安装# chown -R root .# chown -R mysql data# chown -R mysql data/.# chgrp -R mysql .# /usr/local/mysql/bin/mysqld_safe -user=mysql &如果不能启动,查看/usr/local/mysql/data/主机名.err在另一虚拟机也装上mysql主机上建一库,建一表,插数据(用于等下的镜像验证)。四、架设镜像(mysql数据库复制)4.1架设镜像的前提所有参与镜像的数据库,各表都要有主键,否则可能一夜间数据全丢。有瞬间大规模DML操作的应用,其数据库不适合做镜像,因为当大规
12、模DML时,如果是单机,只需10分钟跑完所有过程,但镜像则要1小时,还很可能死机,mysql会死掉。所以,象报表这样的数据库不适合做镜像,只能采用定时的增量恢复。4.2主库/etc/f文件修改主库:mysqldserver-id=1log-bin=/usr/local/mysql/log-bin/bin_db -指定mysql二进制日志文件存放的路径/usr/local/mysql/log-bin/,指定二进制文件名的前缀bin_db(全名是形如:bin_db.000001),指定它即表启用二进制日志/重启主库服务器的mysql.4.3主库建账号、锁表、全备份主机建一用户,用于从备机登录到主机
13、mysql grant replication slave, reload, super, select on *.* to lk% identified by lk;mysqlflush privileges;/用户是否建好,可在从机上验证:/usr/local/mysql/bin/mysql ulk p h 主机IP -能在从机上登录主机,则OK,例:# /usr/local/mysql/bin/mysql -ulk -plk -h192.168.22.140 /主机中执行下面语句:mysql flush tables with read lock; -此时不能写数据库了mysql sho
14、w master status;记下file position字段值形如:masterbin.000001 98#mysqlexit #mysqladmin uroot ppwd shutdown -停掉主库mysql,以便OS考贝。4.4从库/etc/f文件修改从库为了各项配置与主库一致(尤其是innodb方面的参数必须一致,否则就乱),需把主库f考至从机/etc/目录,且改一个参数:mysqldserver-id=2/OK锦上添花1:为了更好的安全性,让从机的非supper级用户即普通用户不能直接在备机上做任何DML、DDL操作,可以加入:read-only = 1 -中间是中划线/等下进
15、入备机的mysql后,可能通过以下方式验证是否是真的read only了:mysql show variables;read_only ON -中间是下划线。对于普通用户已是read only了但一般用处不大,因为一般程序都通过supper级用户连mysql,还是可以DML、DDL。锦上添花2:transaction_isolation = READ-UNCOMMITTED/把从库的事务隔离级别设为它(READ-UNCOMMITTED即脏读),可以防止从库的读与从库的应用从主库来的事务日志之间抢夺table锁的冲突。4.5主库做快照,即操作系统层面tar整个数据目录主机中:#cd /usr/l
16、ocal/mysql#tar cvzf mysqldata.gz data (把data目录全tar下)4.6上述gz文件ftp至备服务器备机中:先停备机mysql:#/usr/local/mysql/bin/mysqladmin uroot p shutdown# ftp 主服务器名(IP)ftpbinftpget data.gzdata.gz文件考至/usr/local/mysql/下,/不需要了:再把主机的数据库全备份文件也ftp过来#mv data data_pre (原来data/的改名)#tar xvzf data.gz#cd data#find .|grep master.inf
17、o#find .|grep relay-log.info找到后全删。4.7备服务器启动、恢复数据库、设为SLAVE备机上,启动mysql:#/usr/local/mysql/bin/mysqld_safe user=mysql &如果以前是别的机的slave,则:mysql reset slave;mysql stop slave;设为slave:mysql CHANGE MASTER TO - MASTER_HOST=192.168.22.74, - MASTER_USER=repl, - MASTER_PASSWORD=password_for_repl, - MASTER_LOG_FIL
18、E= masterbin.000001, -4.3节mysqlshow master status;的数据 - MASTER_LOG_POS=98; -以上两参数值对应4.1节show master status;所得的值。Query OK, 0 rows affected (0.05 sec)备服务器设为SLAVE:mysql start slave; -适应于所有类型mysql表,如innodb、myISAM表等。进入/usr/local/mysql/data/中,看是不是新生成了一个文件:master.info有才正常。且此文本文件中的内容与上面几行配置的值是一样的。mysql show
19、 slave status G -从库中看slave相关属性的值。有才正确。/OK大功告成!别忘了,主库中:#/usr/local/mysql/bin/mysqld_safe user=mysql & -因为先前被关掉服务了mysql unlock tables; -此时又开始能写数据库但此时不能忙着启动相应的web、应用服务器,不能对外提供服务。因为还没验证好。4.8部分数据库、数据表的镜像(复制)/如果是mysql数据库服务器上的所有库、表都参与镜像,此节完全跳过,直接进入4.9节。备服务器先停mysql:#/usr/local/mysql/bin/mysqladmin uroot p s
20、hutdown备服务器再以启某库某表复制、禁某库某表复制的选项,启动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
21、 #同步db2数据库 replicate-ignore-db = mysql #不同步的数据库,如果有多个数据库,每个数据库一行/OK了!就这么简单!4.9主备架构(镜像或者说数据库复制主备机)的验证-A方式验证,主库中:mysql use test; -进入test数据库mysql create table tb1 (c1 char(10);mysql insert into tb1 values(aa);从库中看有无反应:mysqluse test;mysqlshow tables; -看是否有相应的新表存在,存在才是对的,因为镜像就是自动复制主库的东西。mysqlselect * fro
22、m tb1; -看到的记录集应该与主服务器完全一致才是。此时可以启动相应的web、应用服务器,开始对外提供服务。-B验证方式:主库:mysql show master status G; -留意其: File: bin.000014 Position: 615281967从库马上:mysql show slave status G; -留意其: Master_Log_File: bin.000014 Read_Master_Log_Pos: 615281967主从在此两值上能完全对应,或从库因后敲,所以Read_Master_Log_Pos略大。而从库的: Last_Errno: 0 -非0则
23、已不同步 Last_Error: -非空则有某处同步错4.10最实用的架mysql镜像(复制)的步骤1、屏蔽告警2、在40.6窗口一上锁住所有表:FLUSH TABLES WITH READ LOCK;3、在40.6窗口二上备份5个数据库, /usr/local/mysql/bin/mysqldump -uroot -prOOtys)& -single-transaction -R -master-data=2 -databases Dev_authserver Dev_dataserver kd_admin mysql youshangportal ys_org mysql_db_mirro
24、r_20090901.sql并记下同步位置:mysql show master status; -记下file position字段值形如:masterbin.000001 984、在40.8上恢复5个数据库。5、在40.6窗口一上解锁表:UNLOCK TABLES6、配置同步。7、修改原备份IP为40.208、40.8加上40.5的IP地址。五、镜像的mysql,日常管理。5.1主库管理主库因为没有任何设置,所以主库无需任何特别的管理。例:停止再启动主库(类比主服务器死机、重启等情况)#/usr/local/mysql/bin/mysqladmin uroot p shutdown #/us
25、r/local/mysql/bin/mysqld_safe user=mysql & 进入主库并作DML操作:#/usr/local/mysql/bin/mysql uroot pmysql use test;mysql insert into tb1 values(bb);进入从机的mysql看是否已正常把主库的最新信息复制过来:#/usr/local/mysql/bin/mysql uroot pmysql use test;mysql select * from tb1 ;OK,结果集中出现了最新的记录行bb.同样地,可在主库上作DDL操作,看从库的反应,是否与主库同步了。5.2从库管理
26、日常查看:Mysqlshow slave status G如果Last_Errno不为0, Last_Error字段显示有东西,那就是有问题了。其实从库也不用进行任何特别的管理工作。例,停从库,主库作DML、DDL操作,再启从库(类比从库各类故障,未能与主库持续地通信):从库:#/usr/local/mysql/bin/mysqladmin uroot p shutdown 确认从库mysql已停:# netstat antl | grep 3306 -应该找不到相应的行了主库:mysql use test;mysql create table tb2 (c1 char(10);mysql i
27、nsert into tb2 values(111);从库再启mysql:#/usr/local/mysql/bin/mysqld_safe user=mysql & 进入从机的mysql#/usr/local/mysql/bin/mysql uroot pmysql use test; mysql show tables; -刚在主库建的表tb2看到了!mysql select * from tb2; -刚在主库新表tb2加入的数据看到了!在从库的错误日志中,出现类似的:080710 5:44:29 Warning Neither -relay-log nor -relay-log-inde
28、x were used; so replication may break when this MySQL server acts as a slave and has his hostname changed! Please use -relay-log=/usr/local/mysql/data/ysdb-B-relay-bin to avoid this problem.080710 5:44:29 Note /usr/local/mysql/bin/mysqld: ready for connections.这是正常的。不必理会。太简了。呵呵。so easy!5.3镜像中的mysql主
29、从不同步从库中:SQL show slave status G如果有Error,则停从库的slave,等两分钟再启slave:SQL stop slave;1-2分钟后又启从库slave:SQL start slave;如果还不行,如果是主键重复造成不能同步,即从库相应表已有相应记录行,又要应用与此记录行主键相重复的insert语句,则可跳过当前的DML:SQL stop slave;SQL set global sql_slave_skip_counter=1;SQL start slave;有可能要反复两次才能OK。直至SQLshow slave status G 没有错才行。可以考虑停从
30、库slave功能半天时间。5.4镜像中的mysql二进制日志安全地清理自动:vim /etc/f【msyqld】expire_logs_day=20 -保留近20天的日志文件,系统自动清理手动:#date-获服务器当前时间mysqlPURGE MASTER LOGS BEFORE 2008-09-22 12:00:00 ;-此时间是当前删除动作执行的前一天。因为隔了一天时间,相关日志早已同步至slave机了。是安全的。-如果有slave服务器正在读取我们正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。-自动清理二进制日志的shell脚本:#Start clear the
31、 binlog before five days:syear=date -d -5 day +%Ysmonth=date -d -5 day +%msday=date -d -5 day +%dsdate=echo $syear-$smonth-$sday 23:59:59echo $sdate/usr/local/mysql/bin/mysql -uroot -p020674 机器名.err 以瘦身。实际上 机器名.err会变成0字节。5.6镜像中的mysql慢日志安全地清理文件名不能删。否则mysql可能下次起动不了。只能 # tail n100 slow.log slow.log 以瘦身
32、。实际上slow.log会变成0字节。六、镜像的mysql的异动管理6.1不想镜像了主库因为没作任何设置,所以可以不动,当然,为镜像而建的数据库用户,可以delete掉它。从库改主库(主库被洪水冲了),从库中:Mysqlshow slave status; -如果不是”Empty set” ,表明此库为slave库。mysqlstop slave ; mysqlreset slave ; -清理从库的slave.重启mysqlmysqlshow slave status; -什么都看不到了,清掉了。/此时从库彻底摘掉从库、备机的帽子,作为独立的主机了。如果上述方法出问题,可以再考虑下面的,下面
33、的方法并不是很可取:mysql stop slave;#/usr/local/mysql/bin/mysqladmin uroot p shutdown #cd /usr/local/mysql/data#mv master.info master.info_pre#mv relay-log.info relay-log.info_pre重启mysql.七、互为镜像的mysql7.1主服务器设为SLAVE,作备库的备库。其实只需在4.7节的基础上做以下一步就好:主库机上先确定没有从库的相关配置:Mysqlshow slave status;输出结果要是Empty set.才是对的。否则执行6.
34、1节的操作.或者:Mysqlstop slave;备库机上获得下面信息:Mysql show master status;mysql-bin.000007 383378记下从库log file和log pos以便下面用。主库机,设为备库的备库(slave):mysql CHANGE MASTER TO - MASTER_HOST=192.168.22.26, -一定要是从库的IP,别写错了。 - MASTER_USER=repl, - MASTER_PASSWORD=password_for_repl, - MASTER_LOG_FILE=mysql-bin.000007, - MASTER_
35、LOG_POS=383378; -以上两参数值对应本节先前show master status;所得的值。 Query OK, 0 rows affected (0.05 sec)mysql start slave;进入/usr/local/mysql/data/中,看是不是新生成了一个文件:master.info有才正常。且此文本文件中的内容与上面几行配置的值是一样的。mysql show slave status; -从库中看slave相关属性的值。有才正确。/OK大功告成!别忘了如同4.8节,验证。看主库是不是备库的备库。7.2双向复制的镜像环境,备份与恢复试验如:先在其中一机(主库机)
36、中备份db1数据库#/usr/local/mysql/bin/mysqldump uroot p020674 -R db1 db1_bak.sql再在主库机insert一记录,并在从库上也看一下是否同步过去了。再在主库上恢复成原来的:#/usr/local/mysql/bin/mysql uroot p020674 db1 db1_bak.sql看主、从库是否没有了刚才插入的那条记录。果然没了,即主库机和从库机都恢复成原状了。好简单!7.3两台镜像服务器虚拟出一个服务IP在OS层实现(高可用集群),而非mysql应用层。-mysql高手就是这样炼成的!/The end.个人工作业务总结本人于2
37、009年7月进入新疆中正鑫磊地矿技术服务有限公司(前身为“西安中正矿业信息咨询有限公司”),主要从事测量技术工作,至今已有三年。在这宝贵的三年时间里,我边工作、边学习测绘相专业书籍,遇到不懂得问题积极的请教工程师们,在他们耐心的教授和指导下,我的专业知识水平得到了很到的提高,并在实地测量工作中加以运用、总结,不断的提高自己的专业技术水平。同时积极的参与技术培训学习,加速自身知识的不断更新和自身素质的提高。努力使自己成为一名合格的测绘技术人员。在这三年中,在公司各领导及同事的帮助带领下,按照岗位职责要求和行为规范,努力做好本职工作,认真完成了领导所交给的各项工作,在思想觉悟及工作能力方面有了很大
38、的提高。 在思想上积极向上,能够认真贯彻党的基本方针政策,积极学习政治理论,坚持四项基本原则,遵纪守法,爱岗敬业,具有强烈的责任感和事业心。积极主动学习专业知识,工作态度端正,认真负责,具有良好的思想政治素质、思想品质和职业道德。 在工作态度方面,勤奋敬业,热爱本职工作,能够正确认真的对待每一项工作,能够主动寻找自己的不足并及时学习补充,始终保持严谨认真的工作态度和一丝不苟的工作作风。 在公司领导的关怀以及同事们的支持和帮助下,我迅速的完成了职业角色的转变。一、回顾这四年来的职业生涯,我主要做了以下工作:1、参与了新疆库车县新疆库车县胡同布拉克石灰岩矿的野外测绘和放线工作、点之记的编写工作、1
39、:2000地形地质图修测、1:1000勘探剖面测量、测绘内业资料的编写工作,提交成果新疆库车县胡同布拉克石灰岩矿普查报告已通过评审。2、参与了库车县城北水厂建设项目用地压覆矿产资源评估项目的室内地质资料编写工作,提交成果为库车县城北水厂建设项目用地压覆矿产资源评估报告,现已通过评审。3、参与了新疆库车县巴西克其克盐矿普查项目的野外地质勘查工作,参与项目包括:1:2000地质测图、1:1000勘查线剖面测量、测绘内业资料的编写工作;最终提交的新疆库车县康村盐矿普查报告已通过评审。4、参与了新疆哈密市南坡子泉金矿2009年度矿山储量监测工作,项目包括:野外地质测量与室内地质资料的编写,提交成果为新
40、疆哈密市南坡子泉金矿2009年度矿山储量年报,现已通过评审。6、参与了新疆博乐市五台石灰岩矿9号矿区勘探项目的野外地质勘查工作,项目包括:1:2000地质测图、1:1000勘探剖面测量、测绘内业资料的编写工作,并绘制相应图件。7、参与了新疆博乐市托特克斜花岗岩矿详查报告项目的野外地质勘查工作,项目包括:1:2000地质测图、1:1000勘探剖面测量、测绘内业资料的编写工作,并绘制相应图件。通过以上的这些工作,我学习并具备了以下工作能力: 1、通过实习,对测绘这门学科的研究内容及实际意义有了系统的认识。加深对测量学基本理论的理解,能够用有关理论指导作业实践,做到理论与实践相统一,提高分析问题、解
41、决问题的能力,从而对测量学的基本内容得到一次实际应用,使所学知识进一步巩固、深化。2、熟悉了三、四等控制测量的作业程序及施测方法,并掌握了全站仪、静态GPS、RTK等测量仪器的工作原理和操作方法。3、掌握了GPS控制测量内业解算软件(南方测绘 Gps数据处理)以及内业成图软件(南方cass)的操作应用。能够将外业测量的数据导入软件进行地形图成图和处理。4、在项目技术负责的指导下熟悉了测量技术总结的编写要求和方法,并参与了部分项目测量技术总结章节的编写工作。5、在项目负责的领导下参与整个测量项目的组织运作,对项目的实施过程有了深刻理解。通过在项目组的实习锻炼了自己的组织协调能力,为以后的工作打下了坚实基础。二、工作中尚存在的问题 从事测绘工作以来,深深感受到工作的繁忙、责任的重大,也因此没能全方位地进行系统地学习实践,主要表现为没有足够的经验,对于地形复杂的地段理解不够深刻;理论知识掌握不够系统,实践能力尚为有限。以上问题,在今后工作中自己将努力做到更好。三、今后的工作打算 通过总结四年来的工作,我无论从工作技术上,还是从世界观、人生观、价值观等各个方面,都有了很大的提高。今后,我会在此基础上,刻苦钻研,再接再厉,使自己在业务知识水平更上一层楼,为测绘事业的发展,贡献自己的力量。九阳神功系列-vmware_debian_mysql镜像(数据库复制) 作者Liukansoft