1、Mysql windows建立一个帐户 backup,并且只能允许从 192.168.100.2 这个地址上来登陆,密码是 1234。2、因为 mysql 版本新密码算法不同,所以进入 mysql 下,输入:set password for backup192.168.100.2=old_password(1234);3、关停 A 服务器,将 A 中的数据拷贝到 B 服务器中,使得 A 和 B 中的数据同步,并且确保在全部设置操作结束前,禁止在 A 和 B 服务器中进行写操作,使得两数据库中的数据一定要相同!4、对 A 服务器的配置进行修改,打开 mysql/my.ini 文件,在mysqld
2、下面添加如下内容:server-id=1log-bin=c:log-bin.logserver-id:为主服务器 A 的 ID 值log-bin:二进制变更日值5、重启 A 服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去。6、关停 B 服务器,对 B 服务器锦熙配置,以便让它知道自己的镜像 ID、到哪里去找主服务器以及怎么样去连接服务器。最简单的情况是主、从服务器分别运行在 不同的主机上并都使用着默认的 TCP/IP 端口,只要在从服务器启动时去读取的 mysql/my.ini 文件里添加以下几行指令就行了。mysqldserver-id=2master-host=19
3、2.168.100.1master-user=backupmaster-password=1234/以下内容为可选 replicate-do-db=backupserver-id:从服务器 B 的 ID 值。注意不能和主服务器的 ID 值相同。master-host:主服务器的 IP 地址。master-user:从服务器连接主服务器的帐号。master-password:从服务器连接主服务器的帐号密码。replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。7、重启从服务器 B。至此所有设置全部完成。更新 A 中的数据,B 中也会立刻进行同步更新。如果从服务器没有进行同步更
4、新,你可以通过查看从服务器中的 mysql_error.log 日志文件进行排错。8、由于设置了 slave 的配置信息,mysql 在数据库 data 目录下生成master.info,所以如有要修改相关 slave 的配置要先删除该文件,否则修改的配置不能生效。linux 下主从配置 首先两台机器:a: 192.168.100.1(主数据库)b: 192.168.100.2(从数据库)打开 a 机器的 f/my.ini 设置首先要保证要同步的数据库内容完全一致在mysqld下添加以下内容server-id=1# 编号,主辅库的唯一 IDlog-bin=/var/db/mysql/maste
5、r.logbinlog-do-db=要同步的数据库名称 /不写就同步全部。#binlog-ignore-db = mysql /忽略的数据库重起服务器,进入主库,用 show master status 查看主服务器状态。给 b 增加一个 backup 的用户GRANT FILE,REPLICATION SLAVE,REPLICATION CLIENT,SUPER ON *.* TO backup192.168.100.2 IDENTIFIED by backuppassword;这个权限表示,这个 backup 账号只能由从备份机 192.168.100.2 访问只能用来进行备份操作打开 b
6、 机器的 f/my.ini 文件添加或修改以下内容server-id=2master-host=192.168.100.1master-user=backupmaster-password=backuppasswordmaster-port=3306master-connect-retry=60replicate-do-db=要同步的数据库#replicate-ignore-db=不同步的数据库重起服务器,进入辅库用 show slave status G ( G 将表以分行形式、而不是表格形式输出)查看从服务器状态。至此基于 mysql 的同步功能就做好了。slave stop; 停止从服务
7、器slave start; 启动从服务器master stop; 停止主服务器master start; 启动主服务器用 show processlist 可以查看同步状态。如果有什么错误打开 mysql 的 hostname.err 查看原因,再调用下面的修改命令:CHANGE MASTER TOMASTER_HOST=master_host_name,MASTER_USER=master_user_name,MASTER_PASSWORD=master_pass,MASTER_LOG_FILE=recorded_log_file_name,MASTER_LOG_POS=recorded_l
8、og_position;然后再重起 slave; 一般使用 MySQL 的时候,如果数据量不大,我们都使用一台 MySQL 服务器,备份的时候使用 mysqldump 工具就可以了,但是随着业务不断发展,问题出现了:首先:数据量往往直线上升,单独一台数据库服务器开始出现性能的瓶颈,数据访问越来越慢。其次:备份也变得困难了,因为 mysqldump 是导出一份文本文件,而数据量特别大的时候,这样的备份往往需要很长时间,可能有人会说,我们可以直接通 过拷贝数据文件来备份数据库,这样很方便,快捷,不错,这样是比mysqldump 方便快捷,但是,直接拷贝数据文件备份的方式要求我们必须先关闭 mysq
9、l 服务,然后再拷贝数据文件,否则,你拷贝的文件很可能是坏的。而实际运行的 mysql 服务往往要求在任何时候都不可以停止服务,所以这样的备份 方式在此情况下不可行。如果你遇到了类似上面的问题,你就可以使用建立 MySQL 主从服务器的方式来解决,下面先来看看主从服务器的设置:前提:MySQL 主从服务器最好使用相同的软件版本,以避免不不可预期的故障。首先设置 MySQL 主服务器:在主服务器上为从服务器建立一个用户:grant replication slave on *.* to 用户名主机 identified by 密码;编辑主服务器的配置文件:/etc/fserver-id = 1l
10、og-binbinlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可编辑从服务器的配置文件:/etc/fserver-id=2master-host=主机master-user=用户名master-password=密码master-port=端口replicate-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。要验证主从设置是否已经成功,可以登录从服务器输入如下命令:mys
11、ql show slave statusG会得到类似下面的列表:Slave_IO_Running: YesSlave_SQL_Running: Yes如果这两个选项不全是 Yes,那就说明你前面某个步骤配置错了。如果你的设置是正确的,尝试在主服务器上插入若干条记录,然后你再转到从服务器,会发现相应的新记录已经自动同步过来了。如果你的主从服务器已经配置好了,那么你在应用程序中,只要保证所有的insert/delete/update 操作是在主服务器上进行的,那么相应的数据变化会自动同步到从服务器上,这样,我们就可以把 select 操作分担到多台从数据库上,从而降低服务器的载荷。如果你想使用复制
12、数据文件的方式来备份数据库,只要在从服务器上的 mysql命令行先键入 slave stop;然后复制数据库文件,复制好了,再在 mysql 命令行键入 slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的 mysql 无需停止。-提示:如果修改了主服务器的配置,记得删除从服务器上的 master.info 文件。否则从服务器使用的还是老配置,可能会导致错误。-注意:关于要复制多个数据库时,binlog-do-db 和 replicate-do-db 选项的设置,网上很多人说是用半角逗号分隔,经过测试,这样的说法是错误的,MySQL官方文档也明确
13、指出,如果要备份多个数据库,只要重复设置相应选项就可以了。比如:binlog-do-db=abinlog-do-db=breplicate-do-db=areplicate-do-db=b-补充:从服务器上 f 中的 master-*的设置仅在第一次生效,后保存在master.info 文件里。补充:在从服务器上使用 show slave statusSlave_IO_Running,为 No,则说明 IO_THREAD 没有启动,请执行 slave start IO_THREADSlave_SQL_Running 为 No 则复制出错,查看 Last_error 字段排除错误后执行slave
14、 start SQL_THREAD查看 Slave_IO_State 字段空 /复制没有启动Connecting to master/没有连接上 masterWaiting for master to send event/已经连上补充:可以使用 LOAD DATA FROM MASTER 语句来建立 slave。但有约束条件:数据表要全部是 MyISAM 表,必须有 SUPER 权限,master 的复制用户必须具备RELOAD 和 SUPER 权限。在 master 端执行 RESET MASTER 清除已有的日志变更,此时 slave 端会因为找不到 master 日志无法启动 IO_T
15、HREAD,请清空 data 目录下relay-log.info,hosname-relay-bin*等文件重新启动 mysql中继日志文件默认的文件为 hostname-relay-bin.nnn 和 hostname-relay-bin.index。可用从服务器的-relay-log 和-relay-log-index 选项修改。在从服务器中还有一个 relay-log.info 中继信息文件,可用-relay-log-info-file 启动选项修改文件名。双机互备则是两个 mysql 同时配置为 master 及 slave 主服务器上的相关命令:show master statuss
16、how slave hostsshow master|binary logsshow binlog eventspurge master|binary logs to log_namepurge master|binary logs before datereset master(老版本 flush master)set sql_log_bin=0|1从服务器上的相关命令:slave startslave stopSLAVE STOP IO_THREAD /此线程把 master 段的日志写到本地SLAVE start IO_THREADSLAVE STOP SQL_THREAD /此线程把写
17、到本地的日志应用于数据库SLAVE start SQL_THREADreset slaveSET GLOBAL SQL_SLAVE_SKIP_COUNTERload data from mastershow slave status(SUPER,REPLICATION CLIENT)CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= /动态改变 master 信息PURGE MASTER before date 删除 master 端已同步过的日志-read-only 该选项让从服务器只允许来自从服务器线程或具有 SUPER