mysql之replication配置

操作系统:Linux/windows
Master(windows XP)/Slave(Ubuntu 12.04)


Master端IP:192.168.100.31
Slave端IP:192.168.100.30


主从mysql的用户名密码都分别为root/system


1> 主机master设置
1.1> 启动mysql服务
mysqld-nt  --defaults-file=my_1.ini  #  my_1.ini自己定制的mysql配置文件


1.2> 登陆mysql(master的root用户登陆密码为system)
mysql -u root -p -h 192.168.100.31 -P 3306


1.3> 创建测试数据库 
create database test1;


1.4> 选择数据库
use test1;


1.5> 创建表名为test1的表
CREATE TABLE test1 (id int, name  varchar(100));


1.6> 在表test1中插入3条测试数据
INSERT INTO test1 VALUES (1,'name1');
INSERT INTO test1 VALUES (2,'name2');
INSERT INTO test1 VALUES (3,'name3');


1.7> 设置Mysql Replication(master的root用户登陆密码为system)
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO'root'@'192.168.100.30' IDENTIFIED BY 'system';


1.8> 权限生效
mysql>flush privileges;


1.9> 退出mysql命令行界面
mysql> exit


1.10> 停止mysql服务
在任务管理器中,停止任务mysqld-nt.exe


1.11> 更改Mysql配置文件my_1.ini, 在配置文件中添加以下内容
server-id               =1    # 注意不能与其他服务器的配置一样
log_bin                 ="..\data\mysql-bin.log"
binlog-do-db            =test1 # 自动同步的数据库 


1.12> 启动mysql服务, 同步骤1.1
mysqld-nt  --defaults-file=my_1.ini  #  my_1.ini自己定制的mysql配置文件


1.13> 启动命令行, 通步骤1.2
mysql -u root -p -h 192.168.100.31 -P 3306


1.14> 记录 master status, 信息记录好,待设定slave用
mysql>show master status; 
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |       98 | test1        | mysql            |
+------------------+----------+--------------+------------------+



2> 从机Slave设置
2.1> 启动mysql服务
#service mysql restart


2.2> 登陆mysql(slave的root用户登陆密码也为system, 我的系统是这么配置的, 未要求必须这么做!)
mysql -u root -p


2.3> 创建测试数据库 
create database test1;


2.4> 选择数据库
use test1;


2.5> 创建表名为test1的表
CREATE TABLE test1 (id int, name  varchar(100));


2.6> 在表test1中插入3条测试数据
INSERT INTO test1 VALUES (1,'name1');
INSERT INTO test1 VALUES (2,'name2');
INSERT INTO test1 VALUES (3,'name3');


2.7 退出mysql
mysql>exit


2.8 停止mysql服务
#service stop mysql


2.9 打开Mysql的配置文件/etc/mysql/my.cnf, 在[mysqld]中添加以下内容
server-id=2
log-bin=mysql-bin
replicate-do-db=test1
保存退出


2.10 重新启动Mysql服务
#service mysqld  start


2.11 再次登陆mysql, 同2.2
mysql -u root -p


2.12 启动slave, 配置同步服务器相关信息

mysql> change master to master_host='192.168.100.31',master_user='root', master_password='system',master_log_file='mysql-bin.000001',master_log_pos=98;

mysql> START SLAVE;



2.13 查看slave状态
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.31
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 587
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 733
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test1
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 587
              Relay_Log_Space: 890
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)


ERROR: 
No query specified



可以看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,代表已经在同步


至此server服务器上的Mysql设置完毕!!!


3> 测试
3.1> 对主机进行增加一条记录INSERT INTO test1 VALUES(4,'name4'); 检测备机是否也增加了此条记录,经检查,数据相同
3.2> 在主机没有对数据库操作的情况下测试主备数据是否一致,经查看主机和备机的的test1表,记录相同,说明备机成功复制数据。
3.3> 停掉备机mysql,对主机进行添加记录的操作,然后再重启备机mysql,经检查,两边数据完全一致。
3.4> 在主机执行mysql> delete from test1 where id=3; 检测两边数据是否一致。经检查,两边数据完全一致。

3.5> 在主机执行创建数据库表格, 发现从机也生成了相应的表格。

---------------------------------------------------------------------------------------------------------

4> 在上述一主一备的配置下,测试通过,现在加入第二台从机测试:

Slave2(windows XP)  IP:192.168.100.31

mysql user: root

mysql pass: system

mysql port number: 3307


4.1> 启动mysql服务
#service mysql restart


4.2> 登陆mysql(slave的root用户登陆密码也为system, 我的系统是这么配置的, 未要求必须这么做!)
mysql -u root -p


2.3> 创建测试数据库 
create database test1;


4.4> 选择数据库
use test1;


4.5> 创建表名为test1的表
CREATE TABLE test1 (id int, name  varchar(100));


4.6> 在表test1中插入3条测试数据
INSERT INTO test1 VALUES (1,'name1');
INSERT INTO test1 VALUES (2,'name2');
INSERT INTO test1 VALUES (3,'name3');


4.7 退出mysql
mysql>exit


4.8 停止mysql服务
#service stop mysql


4.9 打开Mysql的配置文件/etc/mysql/my.cnf, 在[mysqld]中添加以下内容
server-id=3
log-bin=mysql-bin
replicate-do-db=test1
保存退出


4.10 重新启动Mysql服务
#service mysqld  start


4.11 再次登陆mysql, 同2.2
mysql -u root -p


4.12 启动slave, 配置同步服务器相关信息

mysql> change master to master_host='192.168.100.31',master_user='root', master_password='system',master_log_file='mysql-bin.000001',master_log_pos=98;

mysql> START SLAVE;

-----------------------------------------------------------------------------------------------------------

通过实验,slave2 也可以同步master的数据!

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值