MySQL主从服务器(Replication)的设置:1.首先在主服务器上为从服务器建立一个账户。2.登录从服务器使用步骤一申请的用户名和密码访问主数据库如果可以访问代表建立用户成功。只有3.2版本以上的才支持该技术。
测试环境:
A:10.16.0.246
B:10.16.0.247
MYSQL 5.1.60版本
linux:redhat el 5.4
MYSQL基本命令:
1.连接命令:mysql -h主机地址 -p密码 -u用户名
2.输入多条语句用“,”在每条语句后结尾,确认语句用“;”结尾
主备设置:
1.A服务器上创建数据库并导入数据库
[root@dns /]# mysql -u root -p
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
mysql> source /opt/cdn.sql #source后面指定导入数据库文件的位置
2.B服务器上创建数据库并导入数据库。
[root@dns1 /]# mysql -u root -p
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
mysql> source /opt/cdn.sql
注:还有一种将A服务器上数据库复制到B服务器上的命令.
在A服务器上运行
[root@dns /]# rsync -az --progress -e "ssh" /usr/database/* 10.16.0.247:/opt
3.在A和B服务器上,增加一个用户账号(backup)作为同步用户账号.
A: mysql> Grant replication slave on *.* to backup@'10.16.0.247' identified by '1234'; #结尾分号要打代表确认
B: mysql> Grant replication slave on *.* to backup@'10.16.0.246' identified by '1234';注: (1). mysql> Grant 权限 on *.* to 用户账号@'允许访问的IP' identified by '用户密码';
(2). 4.0.2以前的版本, 因为不支持replication slave, 要改为 file,例如下面的语句:
mysql> Grant file on *.* to backup@'10.16.0.233' identified by '1234';
C:设置A和B服务器上数据库能够被外部地址访问
grant all on *.* to backup@'192.168.1.%' identified by '1234';
4.在B服务器上用如下命令测试backup用户能连上A服务器
c:>mysql -ubackup -p -h10.16.0.246
5.停掉A和B服务器上的mysql服务。
6.A 服务器为 master
[root@dns /]#vi /etc/my.cnf
对文件进行编辑或修改:
server-id=1
log-bin=mysql-bin #设置需要记录log
#日志文件在mysql数据库文件夹根目录下,mysql将建立不同扩展名,文件名为backuplog的几个日志文件。
binlog-do-db=cdn #指定需要同步的数据库
B 服务器为 slave:
[root@dns1 /]#vi /etc/my.cnf
server-id=2
master-host=10.16.0.246
master-user=backup #同步用户帐号
master-password=1234
master-port=3306 #默认端口
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=cdn #告诉slave只做cdn数据库的更新 #在mysql数据库文件夹根目录下,会自动生成一个master.info的日志文件,
#获取master服务器数据库的更新信息。
由于设置了slave的配置信息,mysql在数据库目录下生成master.info。
slave的配置要先删除该文件。否则修改的配置不能生效。
7.启动A服务器mysql服务。
8.输入show master status; #查看主服务器的状态
mysql> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | cdn | manual,mysql |
+-----------------+----------+--------------+------------------+
记录File 和 Position 项目的值mysql-bin.000008和106。8.在B服务器上,停止slave的服务
mysql> slave stop;
9.在从机上设置主服务器的参数 #每句后面逗号要添加
mysql> CHANGE MASTER TO
-> MASTER_HOST="10.16.0.246", #主服务器的IP地址
-> MASTER_USER="backup", #同步数据库的用户
-> MASTER_PASSWORD="1234", #同步数据库的密码
-> MASTER_LOG_FILE="mysql-bin.000008", #主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=106; #日志文件的开始位置(前面要求记住的参数)
10.启动同步数据库的线程
mysql> slave start;
11.在B服务器上输入show slave status\G;查看状态。
当Slave_IO_Running和Slave_SQL_Running显示为Yes时,则表示成功。
https://blog.51cto.com/johnsz/736158