提前准备两台机器(200M+内存),假定为A、B ●要求:在A,B上分别安装部署mysql双实例,端口为3306,3307。 ●要求: 完成3306端口A--->B的mysql主从同步(replication) 完成3307端口B--->A的mysql主从同步(replication)
时间30分钟提示:mysql可事先操作到make install完成。
测试准备:
服务器A:192.168.1.77 服务器B:182.168.1.66
====================================================================================●●测试:3306端口A--->B的mysql主从同步●●
◆主库操作:(192.168.1.77)
[root@pangpang 3306]# mysql -u root -p'pangpang' -S /data/3306/mysql.sock # 登录3306数据库
mysql> grant replication slave on *.* to 'ryanrep'@'192.168.1.%' identified by 'ryanrep'; # 建立用于同步的账号ryanrep
mysql> flush tables with read lock; # 锁表只读
mysql> show master status; # 查看master状态当前日志文件名和二进制日志偏移量+----------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+----------------------+----------+--------------+------------------+| mysql3306-bin.000001 | 627 | | | +----------------------+----------+--------------+------------------+1 row in set (0.00 sec)
单开新窗口,备份数据库:
mysqldump -u root -p -S /data/3306/mysql.sock -A -B >/home/hackbase/ryannew3306.sql # 备份3306数据库
rsync -vzrtopg --progress -e 'ssh -p 52113' /home/hackbase/ryannew3306.sql hackbase@192.168.1.66:/home/hackbase/
# 以上是用rsync把备份的3306数据库推送到192.168.1.66服务器的/home/hackbase目录下。
mysql> unlock tables; # 主库解锁,恢复可写。
mysql> create database 3306test; # 创建3306test数据库
◆从库操作:(192.168.1.66)
mysql -u root -p'pangpang' -S /data/3306/mysql.sock
[root@pangpang 3306]# vi my.cnf # 编辑my.cnf文件
删掉或注释 logbin,并修改id
#log-bin=mysql3306-bin
server-id = 2 # 把id改一下,可改成0-255之间的数字,只要和主库的不一样就行。
[root@pangpang 3306]# /data/3306/mysql restart # 重启从库
[root@pangpang 3306]# mysql -u root -p'pangpang' -S /data/3306/mysql.sock # 用以下命令在从库里和主库进行连接
CHANGE MASTER TO MASTER_HOST='192.168.1.77', MASTER_PORT=3306,MASTER_USER='ryanrep', MASTER_PASSWORD='ryanrep', MASTER_LOG_FILE='mysql3306-bin.000001',MASTER_LOG_POS=627;
接着启动同步命令,并查看:(slave)
mysql> slave start;
mysql> show slave status\G # 下面的两个显示Yes的话为成功
Slave_IO_Running: Yes Slave_SQL_Running: Yes
---------数据库主从同步测试--------------
进入主库进行操作:(192.168.1.77)
[root@pangpang 3306]# mysql -u root -p'pangpang' -S /data/3306/mysql.sock # 登录3306数据库
mysql> show databases; # 显示所有数据库+--------------------+| Database |+--------------------+| information_schema | | 3306test | | mysql | | test | +--------------------+4 rows in set (0.01 sec)
mysql> use 3306test # 连接数据库
mysql> create table hacker3306(name varchar(8)); # 创建表
mysql> insert into hacker3306 value('hacker'); # 插入数据
mysql> select * from hacker3306; # 查看表里面的内容+---------+| name |+---------+| hacker | +---------+1 row in set (0.00 sec)
进入从库进行查看:(192.168.1.66)
[root@pangpang 3306]# mysql -u root -p'pangpang' -S /data/3306/mysql.sock # 登录3306数据库
mysql> show databases; # 显示所有数据库
mysql> use 3306test # 连接数据库
mysql> show tables; # 显示所有表
mysql> select * from hacker3306; # 查看表里面的内容
可以看到已经同步过来了。
====================================================================================●●测试:3307端口B--->A的mysql主从同步●●
◆主库:(192.168.1.66)
[root@pangpang 3307]# mysql -u root -p'pangpang' -S /data/3307/mysql.sock # 登录3307数据库
mysql> grant replication slave on *.* to 'ryanrep'@'192.168.1.%' identified by 'ryanrep'; # 建立用于同步的账号ryanrep
mysql> flush tables with read lock; # 锁表只读
mysql> show master status; # 查看master状态当前日志文件名和二进制日志偏移量+----------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+----------------------+----------+--------------+------------------+| mysql3307-bin.000001 | 860 | | | +----------------------+----------+--------------+------------------+1 row in set (0.00 sec)
单开新窗口,备份数据库
mysqldump -u root -p -S /data/3307/mysql.sock -A -B >/home/hackbase/ryannew3307.sql # 备份3307数据库
rsync -vzrtopg --progress -e 'ssh -p 52113' /home/hackbase/ryannew3307.sql hackbase@192.168.1.77:/home/hackbase/
# 以上是用rsync把备份的3307数据库推送到192.168.1.77服务器的/home/hackbase目录下。
mysql> unlock tables; # 主库解锁,恢复可写。
mysql> create database 3307test; # 创建3307test数据库
◆从库操作:(192.168.1.77)
mysql -u root -p'pangpang' -S /data/3307/mysql.sock
[root@pangpang 3307]# vi my.cnf # 编辑my.cnf文件
删掉或注释 logbin,并修改id
#log-bin=mysql3307-bin
server-id = 3 # 把id改一下,可改成0-255之间的数字,只要和主库的不一样就行。(这里要注意不要和上面的重复)
[root@pangpang 3307]# /data/3307/mysql restart # 重启从库
[root@pangpang 3307]# mysql -u root -p'pangpang' -S /data/3307/mysql.sock # 用以下命令在从库里和主库进行连接
CHANGE MASTER TO MASTER_HOST='192.168.1.66', MASTER_PORT=3307,MASTER_USER='ryanrep', MASTER_PASSWORD='ryanrep', MASTER_LOG_FILE='mysql3307-bin.000001',MASTER_LOG_POS=860;
启动同步命令,并查看:(slave)
mysql> slave start;
mysql> show slave status\G # 下面的两个显示Yes的话为成功
Slave_IO_Running: Yes Slave_SQL_Running: Yes
---------数据库主从同步测试--------------
进入主库进行操作:(192.168.1.66)
[root@pangpang 3307]# mysql -u root -p'pangpang' -S /data/3307/mysql.sock # 登录3307数据库
mysql> show databases; # 显示所有数据库+--------------------+| Database |+--------------------+| information_schema | | 3306test | | mysql | | test | +--------------------+4 rows in set (0.01 sec)
mysql> create database hacker3307; # 创建hacker3307数据库
mysql> use hacker3307 # 连接hacker3307数据库
mysql> create table 3307test(name varchar(8)); # 创建表
mysql> insert into 3307test value('hacker'); # 插入数据
mysql> select * from 3307test; # 查看3307test表里面的内容+---------+| name |+---------+| hacker | +---------+1 row in set (0.00 sec)
进入从库进行查看:(192.168.1.77)
[root@pangpang 3307]# mysql -u root -p'pangpang' -S /data/3307/mysql.sock
mysql> show databases; # 显示所有数据库
mysql> use hacker3307 # 连接hacker3307数据库
mysql> show tables; # 显示所有表
mysql> select * from 3307test; # 查看3307test表里面的内容+---------+| name |+---------+| hacker | +---------+1 row in set (0.01 sec)
可以看到已经同步过来了。
====================================================================================
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!