Mysql主从复制

一.修改mysql安装目录下的my.ini配置文件无效

这里写图片描述

这里写图片描述

上图可以看到,mysql默认加载的配置文件是在ProgramData(该文件夹可能隐藏)路径下的。所以,我们可以将默认加载的配置文件路径,改为安装目录的配置文件:

1.删除mysql服务

sc delete MySql      //Mysql为服务名

2.在Mysql根目录下,新建my.ini文件(可以将ProgramData下的my.ini拷过来),将配置文件中的basedir 和 datadir ,根据你的mysql的位置进行修改:

basedir = D:\MySQL\mysql5.7
datadir = D:\MySQL\mysql5.7\data

3.以管理员身份启动命令行,将工作路劲切换到 Mysql目录下的bin文件夹,如我的是 C:\Program Files\MySQL\MySQL Server 5.7\bin。接着执行下面的命令

mysqld --initialize

此命令的目的是初始化data目录,确保data文件夹为空
4.在执行以下命令

mysqld --install MySQL --defaults-file="C:\MySQL\MySQL Server 5.7\my.ini“

此命令执行完后,会重新初始化Mysql服务,同时指定了配置文件为C:\MySQL\MySQL Server 5.7\my.ini 文件,也就是我们新建的文件。之后在这份my.ini文件里修改myql的属性,重启服务就可以了。

my.ini参数简介

   1.port参数也是表示数据库的端口。

  2.basedir参数表示MySQL的安装路径。

  3.datadir参数表示MySQL数据文件的存储位置,也是数据库表的存放位置。

  4.default-character-set参数表示默认的字符集,这个字符集是服务器端的。

  5.default-storage-engine参数默认的存储引擎。

  6.sql-mode参数表示SQL模式的参数,通过这个参数可以设置检验SQL语句的严格程度。

  7.max_connections参数表示允许同时访问MySQL服务器的最大连接数,其中一个连接是保留的,留给管理员专用的。

  8.query_cache_size参数表示查询时的缓存大小,缓存中可以存储以前通过select语句查询过的信息,再次查询时就可以直接从缓存中拿出信息。

  9.table_cache参数表示所有进程打开表的总数。

  10.tmp_table_size参数表示内存中临时表的总数。

  11.thread_cache_size参数表示保留客户端线程的缓存。

  12.myisam_max_sort_file_size参数表示MySQL重建索引时所允许的最大临时文件的大小。

  13.myisam_sort_buffer_size参数表示重建索引时的缓存大小。

  14.key_buffer_size参数表示关键词的缓存大小。

  15.read_buffer_size参数表示MyISAM表全表扫描的缓存大小。

  16.read_rnd_buffer_size参数表示将排序好的数据存入该缓存中。

  17.sort_buffer_size参数表示用于排序的缓存大小

---------------------------------------------------------
    下面是InnoDB存储引擎使用的参数简介:

  1.innodb_additional_mem_pool_size参数表示附加的内存池,用来存储InnoDB表的内容。

  2.innodb_flush_log_at_trx_commit参数是设置提交日志的时机,若设置为1,InnoDB会在每次提交后将事务日志写到磁盘上。

  3.innodb_log_buffer_size参数表示用来存储日志数据的缓存区的大小。

  4.innodb_buffer_pool_size参数表示缓存的大小,InnoDB使用一个缓冲池类保存索引和原始数据。

  5.innodb_log_file_size参数表示日志文件的大小。

  6.innodb_thread_concurrency参数表示在InnoDB存储引擎允许的线程最大数。
    注意:每次修改参数后,必须重新启动MySQL服务才会有效。

二.配置master数据库

1.在my.ini文件的[mysqld]后面加上以下配置


#数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;   
server-id = 1  
#启用二进制日志;  
log-bin=mysql-bin  
#需要同步的二进制数据库名;  
binlog-do-db=member  
#不同步的二进制数据库名,如果不设置可以将其注释掉;  
binlog-ignore-db=information_schema  
binlog-ignore-db=mysql  
binlog-ignore-db=sys 
binlog-ignore-db=performance_schema
#设定生成的log文件名;  
log-bin="C:/Database/masterlog"  
#把更新的记录写到二进制文件中;  
log-slave-updates

2.配置完毕之后,启动master数据库,在主服务器上建立帐户并授权slave:mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by 'slave';
//一般不用root帐号,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.1.111,加强安全。
3.登录主服务器的mysql,查询master的状态

 mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      1281 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

三.配置slave数据库

1.

   mysql>change master to master_host='119.23.11.31',
        ->master_user='slave',
        ->master_password='slave',
        ->master_log_file='masterlog.000004',
        ->master_log_pos=1281;  //注意不要断开,1281数字前后无单引号。

2.检查slave的复制功能状态:

Slave_IO_State: Waiting for master to send event
              Master_Host: 119.23.11.31  //主服务器地址
              Master_User: slave   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: masterlog.000004
              Read_Master_Log_Pos: 1281     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
笔者出现的是Slave_IO_Running: No(或Connecting)
原因一般是:

    1.master开放的slave账号密码是否正确
    2.账号限定ip的话,确保ip是slave的ip
    3.用navcat连下master数据库,看是否能连上等等           

以上操作过程,主从服务器配置完成。
下一节,将和大家一起探讨使用Mycat中间件,实现读写分离。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值