1 / 15
文档名称:

vmware-debian-mysql镜像(数据库复制)安装与管理-精华.doc

格式:doc   大小:123KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

vmware-debian-mysql镜像(数据库复制)安装与管理-精华.doc

上传人:知识徜徉土豆 2025/6/15 文件大小:123 KB

下载得到文件列表

vmware-debian-mysql镜像(数据库复制)安装与管理-精华.doc

相关文档

文档介绍

文档介绍:该【vmware-debian-mysql镜像(数据库复制)安装与管理-精华 】是由【知识徜徉土豆】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【vmware-debian-mysql镜像(数据库复制)安装与管理-精华 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
目 录
一、安装debian 2
vmware准备 2
vmware新建虚拟机 2
vmware debian安装验证 2
二、安装ftp 3
改/etc/apt/ 3
安装vsftpd 3
4
三、安装mysql 4
四、架设镜像(mysql数据库复制) 5
5
5
、锁表、全备份 5
6
,即操作系统层面tar整个数据目录 6
6
、恢复数据库、设为SLAVE 7
、数据表的镜像(复制) 8
(镜像或者说数据库复制主备机)的验证 8
(复制)的步骤 9
五、镜像的mysql,日常管理。 9
9
10
11
11
12
12
六、镜像的mysql的异动管理 12
12
七、互为镜像的mysql 13
,作备库的备库。 13
,备份与恢复 14
14
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
一、安装debian
  vmware准备
为了vmware中的debian能dhcp:
vmware 在windows网上邻居属性中的两个虚拟网卡:设为dhcp.
c:>ipconfig /renew
  vmware新建虚拟机
vmware中:
operating system设为: Linux (Ubuntu) 或者other linux.
Network connection设为: Use bridged networking
disk capacity设为: 10G (大于10G好象很容易坏)
内存设为:680M
CD-ROM:Use ISO image:debian-40r0-i386-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 to use WINS settings from DHCP?选YES
X server:设为1280X768
Install the GRUB boot load to the master boot record? 选YES
debian图形界面的进入:startx 回车即可。
  vmware debian安装验证
以root身份进入terminal,
# ifconfig
如果能自动分到一个与主机同一网段的IP。说明OK。
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
二、安装ftp
改/etc/apt/
debian1:/etc/apt# vim
/////////////
deb / etch main contrib
deb-src / etch main contrib
deb / etch/updates main contrib
deb-src / etch/updates main contrib
安装vsftpd
//////////////更新debian OS 数据库
debian1:/etc/apt# apt-get update
///看有没有vsftp程序包可以用来安装,有可能会出错,但没问题,照样可以下载
debian1:/etc/apt# apt-cache search vsftpd
////下载vsftpd程序:
debian1:/etc/apt# apt-get install vsftpd
debian1:/etc/apt# vim /etc/
listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
chown_uploads=YES
chown_username=whoever
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/
ls_recurse_enable=YES
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
//////////////
/etc/ restart ----重启ftp
debian1:/etc/apt# netstat -an|grep 21 ----查ftp 21号端口是否已工作

尝试在本虚拟机上登录ftp:
debian1:/etc/apt# ftp (localhost)
结果报错:
Connected to .
500 OOPS: vsftpd: cannot locate user specified in 'chown_username':whoever
那么 :
debian1:/etc/apt# useradd -g root -d /home/whoever whoever
////再尝试登录ftp:
debian1:/etc/apt# ftp (localhost)
还是报错:
could not open chroot() list file:/etc/
那么:
debian1:/etc/# vim ----在/etc/目录下
#
root
#
///OK!!!
三、安装mysql
通过ftp把mysql--linux-(/home/oracle)
# cp mysql--linux- /usr/local/
# groupadd mysql
# useradd mysql -g mysql
#passwd mysql
# tar xfv mysql--linux-
# mv mysql--linux-i686 mysql
# cp /usr/local/mysql/support-files/my- /etc/
# cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql ----安装
# chown -R root .
# chown -R mysql data
# chown -R mysql data/.
# chgrp -R mysql .
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果不能启动,查看/usr/local/mysql/data/
在另一虚拟机也装上mysql
主机上建一库,建一表,插数据(用于等下的镜像验证)。
四、架设镜像(mysql数据库复制)

……所有参与镜像的数据库,各表都要有主键,否则可能一夜间数据全丢。
……有瞬间大规模DML操作的应用,其数据库不适合做镜像,因为当大规模DML时,如果是单机,只需10分钟跑完所有过程,但镜像则要1小时,还很可能死机,mysql会死掉。所以,象报表这样的数据库不适合做镜像,只能采用定时的增量恢复。

主库:
[mysqld]
server-id=1
log-bin=/usr/local/mysql/log-bin/bin_db
----指定mysql二进制日志文件存放的路径/usr/local/mysql/log-bin/,指定二进制文件名的前缀bin_db(全名是形如:),指定它即表启用二进制日志
//////////////////////
重启主库服务器的mysql.
、锁表、全备份
主机建一用户,用于从备机登录到主机
mysql> grant replication slave, reload, super, select on *.* to lk@"%" identified by 'lk';
mysql>flush privileges;
/////用户是否建好,可在从机上验证:
//////usr/local/mysql/bin/mysql –ulk –p –h 主机IP ----能在从机上登录主机,则OK,例:
# /usr/local/mysql/bin/mysql -ulk -plk -
/////
主机中执行下面语句:
mysql> flush tables with read lock; ---此时不能写数据库了
mysql> show master status;
记下file position字段值
形如:
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
98
#mysql>exit
#mysqladmin –uroot –ppwd shutdown ---停掉主库mysql,以便OS考贝。

从库为了各项配置与主库一致(尤其是innodb方面的参数必须一致,否则就乱),,且改一个参数:
[mysqld]
server-id=2
////OK
锦上添花1:
为了更好的安全性,让从机的非supper级用户即普通用户不能直接在备机上做任何DML、DDL操作,可以加入:
read-only = 1 -----中间是中划线
////
等下进入备机的mysql后,可能通过以下方式验证是否是真的read only了:
mysql> show variables;

read_only ON -----中间是下划线。对于普通用户已是read only了

但一般用处不大,因为一般程序都通过supper级用户连mysql,还是可以DML、DDL。
锦上添花2:
transaction_isolation = READ-UNCOMMITTED
////////
把从库的事务隔离级别设为它(READ-UNCOMMITTED即脏读),可以防止从库的读与从库的应用从主库来的事务日志之间抢夺table锁的冲突。
,即操作系统层面tar整个数据目录
主机中:
#cd /usr/local/mysql
#tar cvzf data (把data目录全tar下)

备机中:
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
先停备机mysql:
#/usr/local/mysql/bin/mysqladmin –uroot –p shutdown
# ftp 主服务器名(IP)
ftp>bin
ftp>get

//////不需要了:再把主机的数据库全备份文件也ftp过来
#mv data data_pre (原来data/的改名)
#tar xvzf
#cd data
#find .|grep
#find .|grep relay-
找到后全删。
、恢复数据库、设为SLAVE
备机上,启动mysql:
#/usr/local/mysql/bin/mysqld_safe –user=mysql &
如果以前是别的机的slave,则:
mysql> reset slave;
mysql> stop slave;
设为slave:
mysql> CHANGE MASTER TO
-> MASTER_HOST='',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='password_for_repl',
-> MASTER_LOG_FILE=' ', ---->show master status;的数据
-> MASTER_LOG_POS=98;
---- master status;所得的值。
Query OK, 0 rows affected ( sec)
备服务器设为SLAVE:
mysql> start slave; -----适应于所有类型mysql表,如innodb、myISAM表等。
进入/usr/local/mysql/data/中,看是不是新生成了一个文件:

有才正常。且此文本文件中的内容与上面几行配置的值是一样的。
mysql> show slave status \G ---从库中看slave相关属性的值。有才正确。
/////////////////////OK大功告成!
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
别忘了,主库中:
#/usr/local/mysql/bin/mysqld_safe –user=mysql & ----因为先前被关掉服务了
mysql> unlock tables; --此时又开始能写数据库
但此时不能忙着启动相应的web、应用服务器,不能对外提供服务。因为还没验证好。
、数据表的镜像(复制)
//////如果是mysql数据库服务器上的所有库、表都参与镜像,此节完全跳过,。
备服务器先停mysql:
#/usr/local/mysql/bin/mysqladmin –uroot –p shutdown
备服务器再以启某库某表复制、禁某库某表复制的选项,启动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 &

replicate-do-db = db1 #同步的数据库,如果有多个数据库,每个数据库一行
replicate-do-db = db2 #同步db2数据库
replicate-ignore-db = mysql #不同步的数据库,如果有多个数据库,每个数据库一行
///OK了!就这么简单!
(镜像或者说数据库复制主备机)的验证
-----A方式验证,主库中:
mysql> use test; ---进入test数据库
mysql> create table tb1 (c1 char(10));
mysql> insert into tb1 values(‘aa’);
从库中看有无反应:
mysql>use test;
mysql>show tables; ---看是否有相应的新表存在,存在才是对的,因为镜像就是自动复制主库的东西。
mysql>select * from tb1; ----看到的记录集应该与主服务器完全一致才是。
此时可以启动相应的web、应用服务器,开始对外提供服务。
-----B验证方式:
主库:
mysql> show master status \G; ------留意其:
File:
Position: 615281967
从库马上:
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
mysql> show slave status \G; ------留意其:
Master_Log_File:
Read_Master_Log_Pos: 615281967
主从在此两值上能完全对应,或从库因后敲,所以Read_Master_Log_Pos略大。而从库的:
Last_Errno: 0 ----非0则已不同步
Last_Error: ----非空则有某处同步错
(复制)的步骤
1、屏蔽告警
2、:FLUSH TABLES WITH READ LOCK;
3、,
/usr/local/mysql/bin/mysqldump -uroot -p'******@ys@))&' --single-transaction -R --master-data=2 --databases Dev_authserver Dev_dataserver kd_admin mysql youshangportal ys_org >
并记下同步位置:
mysql> show master status; -----记下file position字段值
形如:
98
4、。
5、:UNLOCK TABLES
6、配置同步。
7、
8、。
五、镜像的mysql,日常管理。

主库因为没有任何设置,所以主库无需任何特别的管理。
例:
停止再启动主库(类比主服务器死机、重启等情况)
#/usr/local/mysql/bin/mysqladmin –uroot –p shutdown
#/usr/local/mysql/bin/mysqld_safe –user=mysql &
进入主库并作DML操作:
#/usr/local/mysql/bin/mysql –uroot –p
九阳神功系列----vmware_debian_mysql镜像(数据库复制) 作者Liukansoft
mysql> use test;
mysql> insert into tb1 values(‘bb’);
进入从机的mysql看是否已正常把主库的最新信息复制过来:
#/usr/local/mysql/bin/mysql –uroot –p
mysql> use test;
mysql> select * from tb1 ;
OK,结果集中出现了最新的记录行’bb’.
同样地,可在主库上作DDL操作,看从库的反应,是否与主库同步了。

日常查看:
Mysql>show 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> insert into tb2 values(‘111’);
从库再启mysql:
#/usr/local/mysql/bin/mysqld_safe –user=mysql &
进入从机的mysql
#/usr/local/mysql/bin/mysql –uroot –p
mysql> use test;
mysql> show tables; ----刚在主库建的表tb2看到了!
mysql> select * from tb2; ---刚在主库新表tb2加入的数据看到了!
在从库的错误日志中,出现类似的:
080710 5:44:29 [Warning] Neither --relay-log nor --relay-log-index 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.
……