在Linux上建立MySQL 5.0镜像
实现MySQL高可靠性方案有很多方法,其中,利用MySQL自带的的复制功能是最简单的一种。MySQL内部复制功能是建立在两个或两个以上服
实现MySQL高可靠性方案有很多方法,其中,,利用MySQL自带的的复制功能是最简单的一种。MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的主-从关系来实现的。其中一个作为主服务器,其它的作为从服务器。配置方法如下:
第一步:用mysql -V查看主从服务器版本是否一致。不一致可能导致复制失败。
建立完帐号后,在slave_host上使用mysql -h masterhost -urepuser -ppassword测试帐号建立是否成功;
第三步:确保主服务器上my.cnf文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为1到232–1之间的一个正整数值。例如:
[mysqld]
log-bin=mysql-bin
server-id=1
一般情况你打开my.cnf后,已经默认是这样的设置了,里面内容看起来像下面这样:
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
注意:安装MySQL-server-community RPM后,有的并没有/etc/my.cnf文件。但在/usr/share/mysql目录下,有一些配置模板,比如my-small.cnf, my-large.cnf等,可以根据系统需求,把其中一个模板拷贝为/etc/my.cnf。再进行自己定义。好多情况下,需要调整[mysqld]下面的max_allowed_packet值,将其设置为16M。
第四步:将主服务器上的数据库完整复制到从服务器上。可以使用mysqldump,也可以使用二进制备份。这里介绍二进制备份的方法。
mysql> FLUSH TABLES WITH READ LOCK;
然后对主服务器上的数据进行快照。(此时不要退出mysql的提示符,退出的话就解锁了.新开一个ssh窗口进行下面所说的归档打包操作)
创建快照最简单的途径是使用归档程序对主服务器上的数据目录(缺省的是/var/lib/mysql)中的数据库进行二进制备份。要使用tar来创建包括所有数据库的归档文件,进入主服务器的数据目录,然后执行命令:(注意下面的目录操作是在bash的提示符下进行,这里用shell>来代表,还要注意执行的命令是在哪台服务器上)
shell> tar -cvf /tmp/mysql-snapshot.tar .
然后将归档文件复制到从服务器的/tmp目录。
创建完归档文件后,可以恢复主数据库的写操作
mysql> UNLOCK TABLES;
shell> tar -xvf /tmp/mysql-snapshot.tar
master-host=master_host
master-user=repuser //第二步建立的
master-password=password //第二步建立的
mysql > slave start;
更改主库的内容,看备份库是否跟着改变。
说明:由于从服务器是通过读主服务器的二进制日志来实现自我更新的,所以对于对数据库进行修改的操作都要放在主服务器上执行,而从服务器只用来进行查询.(也就是只读不写的数据库操作).