mysqld_multi实现单机主从复制
2017-09-20 16:57
357 查看
步骤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;
[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;
相关文章推荐
- redis实现主从复制-单机测试
- Ubuntu 14.04下 MySQL实现单机主从复制
- 巧用mysqld_multi实现多主对一从的mysql复制
- MySQL实现单机多实例安装并配置主从复制
- mysql中利用mysqld_multi实现单机多实例
- 巧用mysqld_multi实现多主对一从的mysql复制 推荐
- 利用mysqld_multi快速实现多主复制~~~ 推荐
- MySQL单机多实例部署详解之------利用mysqld_multi配置实现
- 在Linux环境下单机上实现MySQL5主从数据库同步复制
- mysqld_multi实现多主一从复制
- MySQL单机多实例部署详解之------利用mysqld_multi配置实现
- redis实现主从复制和高可用(主从切换)
- tokyo tyrant源码分析-主从复制实现
- Windows环境下实现主从复制
- mysql主从复制的实现
- Redis主从复制的实现
- atlas+mysql实现主从复制和读写分离(一)
- mysql主从复制的原理及配置实现
- mysql实现主从复制
- Mysql主从复制,读写分离之Mysql-proxy实现