首页 电脑 电脑学堂 查看内容

双机部署Mysql主从同步

2011-6-27 11:36 528 0

摘要: 提前准备两台机器(200M+内存),假定为A、B  ●要求:在A,B上分别安装部署mysql双实例,端口为3306,3307。  ●要求:   &nb...
关键词: nbsp mysql 数据库 3306 3307 192.168 root 主从 hackbase 同步

提前准备两台机器(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 [email protected]:/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 </home/hackbase/ryannew3306.sql   # 把备份的导入从库,保证同步前数据一致性 [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 [email protected]:/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 </home/hackbase/ryannew3307.sql  # 把备份的导入从库,保证同步前数据一致性 [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) 可以看到已经同步过来了。 ====================================================================================
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部