步骤1: 使用mysqld_multi开启上一节已经设定好的三个MySQL服务,命令执行如下。
[root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3   
[root@localhost ~]# netstat -an|grep 330


步骤2: 登录Master主服务器,设置一个复制使用的账户,并授予REPLICATION SLAVE权限。这里创建一个复制用户rep1。
[root@localhost ~]# mysql -u root -p -P 3306
mysql> grant replication slave on *.* to 'repl'@'localhost' identified by '123';
mysql> grant replication slave on *.* to 'repl'@'%' identified by '123';
 
步骤3: 修改Master主数据库服务器的配置文件my.cnf,开启BINLOG,并设置server-id的值。需要重启服务器之后才生效。

[root@localhost ~]#vi /etc/my.cnf 

 [mysqld1] 

 port 
 = 3306  

 log-bin = /usr/local/var/mysql1/mysql-bin 

 server-id = 1 



 [root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf stop 1-3    

 [root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3




步骤4: 在Master主服务器上,设置度锁定有效,这个操作为了确保没有数据库操作,以便获得一致性的快照。
[root@localhost ~]# mysql -u root -P 3306 -S /tmp/mysql.sock
mysql> flush tables with read lock;


步骤5: 用show master status 命令查看日志情况,查询得到主服务器上当前的二进制日志名和偏移量值。这个操作的目的是为了从数据库启动以后,从这个点开始进行数据的恢复。
mysql> show master status \G;


步骤6: 主数据库服务此时可以做一个备份,可以在服务器停止的情况下直接使用系统拷贝命令。
[root@localhost mysql1]#tar –cvf data.tar data


步骤7: 主数据库备份完成后,主数据库恢复写操作,命令执行如下。
mysql> unlock tables;
mysql> start slave;


步骤8: 接下来继续编辑/etc/my.cnf文件,具体配置项如下。

# The MySQL server 

 [mysqld_multi] 

 mysqld 
       = /usr/local/mysql/bin/mysqld_safe 

 mysqladmin 
 = /usr/local/mysql/bin/mysqladmin 

 user 
= root 

 [mysqld1] 

 port 
 = 3306 

 log-bin 
 = /usr/local/var/mysql1/mysql-bin 

 server-id 
 = 1 



 [mysqld2] 

 port 
 = 3307 

 socket 
= /temp/mysql2.sock 

 datadir 
 = /usr/local/var/mysql2 

 log-bin 
 = /usr/local/var/mysql2/mysql-bin 

 server-id 
 = 2 

    

 [mysqld3] 

 port 
 = 3308 

 socket 
= /temp/mysql3.sock 

 datadir 
 = /usr/local/var/mysql3 

 log-bin 
 = /usr/local/var/mysql3/mysql-bin 

 server-id 
 = 3 



 [mysqld]




步骤9: 重启Master主服务器,命令执行如下。

[root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf stop 1-3 

 [root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3 

 [root@localhost ~]# mysqld_multi --defaults-extra-file=/etc/my.cnf report




步骤10: 对从数据库服务器做相应设置,此时需要制定复制使用的用户,主数据的IP地址,端口以及开始复制的日志文件和位置等,具体设置如下。

[root@localhost ~]# mysql -uroot -p -P 3307 -S /temp/mysql2.sock 

 mysql> show variables like '%log_bin%'; 

 mysql> stop slave; 

 mysql> change master to 

     -> master_host='127.0.0.1', 

     -> master_user='repl', 

     -> master_password='123', 

     -> master_log_file='mysql-bin.000001', 

     -> master_log_pos=120;






步骤11: 在从服务器上执行show slave status\G命令查询从服务器的状态,命令执行如下。
mysql> start slave;
mysql> show slave status \G;


步骤12: 此时发现从服务器已经成功设置,此时也可以执行show processlist \G命令查询从服务器的进程状态,命令执行如下。
mysql> show processlist \G;


步骤13: 此时可以测试复制服务的正确性,在Master主数据库上执行一个更新操作,观察是否在从服务器上同步,下面在主数据库的test库上创建一个测试表,然后插入数据,命令执行如下。

[root@localhost ~]# mysql -uroot -p -P 3306 -S /tmp/mysql.sock  

 mysql> use test;  

 mysql> show tables;  



 mysql> create table repl_test(id int);  

 mysql> insert into repl_test values(1),(2);




步骤14: 在从服务器上检测新的表是否被创建,数据是否同步,执行命令如下。

[root@localhost ~]# mysql -uroot -P 3307 -S /temp/mysql2.sock  

 mysql> use test;   

 mysql> show tables;   

 mysql> select * from repl_test;