当前位置: 代码迷 >> 综合 >> windows下Mysql master-slave
  详细解决方案

windows下Mysql master-slave

热度:83   发布时间:2023-12-21 17:08:47.0

windows下Mysql master-slave

文章分类:数据库

假设安装过一个Mysql
1.先安装2个Mysql 其实也就是复制一个Mysql (Mysql5.1  和 Mysql5.2)
2.修改端口号和安装地址(my.ini) 这里我们不使用默认端口3306 主要测试
 
Xml代码
  1. Mysql5.1   
  2. [client]   
  3. port=3307  
  4. [mysqld]   
  5. port=3307  
  6. basedir="E:/Mysql5.1/"  
  7. datadir="E:/Mysql5.1/Data/"  
  8.   
  9. Mysql5.2   
  10. [client]   
  11. port=3308  
  12. [mysqld]   
  13. port=3308  
  14. basedir="E:/Mysql5.2/"  
  15. datadir="E:/Mysql5.2/Data/"  
  Mysql5.1[client]port=3307[mysqld]port=3307basedir="E:/Mysql5.1/"datadir="E:/Mysql5.1/Data/"Mysql5.2[client]port=3308[mysqld]port=3308basedir="E:/Mysql5.2/"datadir="E:/Mysql5.2/Data/"

3.在Master(Mysql5.1)的数据库中建立一个备份帐户,命令如下
 
Sql代码
  1. GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost' IDENTIFIED BY '123456';  
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost' IDENTIFIED BY '123456';


4.Master 为Mysql5.1 修改如下(my.ini):
 
Xml代码
  1. [mysqld]   
  2.   #Master start   
  3.   #日志输出地址 主要同步使用   
  4.   log-bin=E:\Mysql5.1\Data\log-bin.log   
  5.   #同步数据库   
  6.   binlog-do-db=cnb  
  7.   #主机id 不能和从机id重复   
  8.   server-id=1    
  9.   #Master end  
[mysqld]#Master start#日志输出地址 主要同步使用log-bin=E:\Mysql5.1\Data\log-bin.log#同步数据库binlog-do-db=cnb#主机id 不能和从机id重复server-id=1 #Master end

5.Slave 为Mysql5.2 修改如下(my.ini):
 
Xml代码
  1. [mysqld]   
  2.   #Slave start   
  3.   log-bin=E:\Mysql5.2\Data\log-bin.log   
  4.   #从机id,区别于主机id   
  5.   server-id=2  
  6.   #主机ip,供从机连接主机用   
  7.   master-host=localhost  
  8.   #主机端口   
  9.   master-port=3307  
  10.   #刚才为从机复制主机数据新建的账号   
  11.   master-user=slave    
  12.   #刚才为从机复制主机数据新建的密码   
  13.   master-password=123456  
  14.   #重试间隔时间10秒   
  15.   master-connect-retry=10    
  16.   #需要同步的数据库   
  17.   replicate-do-db=cnb  
  18.   #启用从库日志,这样可以进行链式复制   
  19.   log-slave-updates   
  20.   #从库是否只读,0表示可读写,1表示只读   
  21.   read-only=1  
  22.   
  23.   #只复制某个表   
  24.   #replicate-do-table=tablename                    
  25.   #只复制某些表(可用匹配符)   
  26.   #replicate-wild-do-table=tablename%   
  27.   #只复制某个库   
  28.   #replicate-do-db=dbname  
  29.   #不复制某个表   
  30.   #replicate-ignore-table=tablename  
  31.   #不复制某些表   
  32.   #replicate-wild-ignore-table=tablename%   
  33.   #不复制某个库   
  34.   #replicate-ignore-db=dbname  
  35.   #Slave end  
[mysqld]#Slave startlog-bin=E:\Mysql5.2\Data\log-bin.log#从机id,区别于主机idserver-id=2#主机ip,供从机连接主机用master-host=localhost#主机端口master-port=3307#刚才为从机复制主机数据新建的账号master-user=slave #刚才为从机复制主机数据新建的密码master-password=123456#重试间隔时间10秒master-connect-retry=10 #需要同步的数据库replicate-do-db=cnb#启用从库日志,这样可以进行链式复制log-slave-updates#从库是否只读,0表示可读写,1表示只读read-only=1#只复制某个表#replicate-do-table=tablename                 #只复制某些表(可用匹配符)#replicate-wild-do-table=tablename%#只复制某个库#replicate-do-db=dbname#不复制某个表#replicate-ignore-table=tablename#不复制某些表#replicate-wild-ignore-table=tablename%#不复制某个库#replicate-ignore-db=dbname#Slave end
6.查询当前主机数据库文件和位置
  mysql> show master status;
  +----------------+----------+--------------+------------------+
  | File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +----------------+----------+--------------+------------------+
  | log-bin.000001 |       98 | cnb          |                  |
  +----------------+----------+--------------+------------------+

6.数据库操作测试如下为在Master(Mysql5.1)端操作 然后查看Slave(Mysql5.2)
 
Sql代码
  1. create databse cnb;   
  2.      
  3.   CREATE TABLE `users` (   
  4.      `id` bigint(20) NOT NULL auto_increment,   
  5.      `namevarchar(255) default NULL,   
  6.      PRIMARY KEY  (`id`)   
  7.   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   
  8.   
  9.   insert users(namevalues('jacky');  
  相关解决方案