Win10下Mysql主从库配置二次整理

作者: 程就人生 | 来源:发表于2019-08-07 23:53 被阅读0次

    前一段时间,配置了主从库,最近突然想起,这个主从库怎么配置的也忘个差不多了,今天只好在自家的小电脑上再来一遍。写了本地 win10系统 MySql主从库配置一文,现在翻回去看时,总有一些地方含糊,还有一些地方没有说清楚。

    这几天晚上在家里试着配置个主从库,本以为很简单,一个晚上能够搞定,可还是弄了好几个晚上,第一个晚上,网速不给力,下载压缩包的网站都打不开,只能等到第二天一早下载,早上时,网速超级的快,几分钟就下载好了。

    第二天晚上,继续配置主从库,配置了好几次,总是搞不清从库的data从哪里来的,又查了资料才知道,拷贝主库已经生成的data便可,只是需要删除一个auto.cnf文件。

    反反复复配置了好几次,中间又遇到了主从库server_id重复的问题,这个问题是因为提前在配置文件中写了server_id引起的。看来还是需要按照步骤来,一步一步的配置,有些配置不能提前设置,提前设置了,后面就出问题。

    现在还是把主从库配置的步骤捋一捋:

    1.先下载压缩包,解压压缩包
    2.主库、从库数据库文件命名,建立配置文件及data文件夹
    3.配置环境变量
    4.注册主从库服务,生成系统文件及data文件夹下的系统文件,重启
    5.更改配置文件,重置密码后,重启,复原配置文件,再重启;
    6.主库配置,从库配置,查看配置参数
    7.主从配置的测试

    首先,打开mysql的官网,找个适合电脑系统的压缩包下载。来到download下的community,在community下选择MySql community server,在这一页里的最下面找到适合当前系统的版本,https://dev.mysql.com/downloads/file/?id=487427,进行下载操作。
    图-1
    图-2
    图-3
    第二步,解压压缩文件,拷贝成两个,一个是主库命名为mysql-master,一个从库命名为mysql-slave,并在各自的文件夹下建立data文件夹,以及my.ini配置文件,两个的配置文件除了端口号、data文件的存放目录不一样以外,其他的都是一样的。

    my.ini文件内容如下:

    #代码开始
    [Client]
    #设置3306端口
    port = 3306
    default-character-set=utf8
    [mysqld]
    #设置3306端口
    port = 3306
    #设置mysql服务器字符集
    collation-server=utf8_general_ci
    # 设置mysql的安装目录
    basedir=c:\database\mysql-master
    # 设置mysql数据库的数据的存放目录
    datadir=c:\database\mysql-master\data
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎,支持事务
    default-storage-engine=INNODB
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    #重新设置密码时,将此放开,设置成功后,再注释掉
    #skip-grant-tables
    #表名全部为小写,避免出现大小写敏感
    lower_case_table_names=1
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    #让mysql数据库支持 事务设置 引擎为:INNODB
    #default-storage-engine=INNODB
    #代码结束
    
    第三步,配置mysql的系统环境变量,方便后面的命令运行。
    MYSQL_HOME
    C:\database\mysql-master;C:\database\mysql-slave
    

    在path后面追加:

    %MYSQL_HOME%\bin
    

    不配置环境变量,mysql的命令无法识别,最终导致无法运行。

    第四步,安装主从库的服务;在运行下,以管理员的身份进入到mysql-master下的bin文件夹,执行命令:
    #主库服务安装命令
    mysqld --install mysqlmaster --defaults-file=“c:\database\mysql-master\my.ini”
    # 出现 Service successfully installed. 时,代表安装成功;
    #初始化data文件夹下的数据库系统文件
    mysqld --initialize
    
    #从库服务安装命令
    mysqld --install mysqlslave --defaults-file=“c:\database\mysql-slave\my.ini”
    #从库的data,从主库中把data下的文件夹都拷贝过来,删除auto.cnf 文件即可;
    
    #可使用此命令查看主从库的server_id,防止主从库的server_id冲突,导致后面的配置失败;
     show variables like 'server_id';
    

    如果安装错了,用 mysqld --remove mysqlmaster 命令移除;安装成功后进行启动服务;

    #启动mysql
    net start mysqlmaster
    net start mysqlslave
    #停止mysql
    net stop mysqlmaster
    net stop mysqlslave
    
    第五步,主从库重新设置密码

    把my.ini中的skip-grant-tables注解去掉,然后重启mysql服务,设置完密码后,再次将注解加上,再一次的重启,使密码生效。
    进入到bin文件夹,mysql -u root -p 命令进入mysql的命令行,然后输入密码123456

    #使用系统数据库,修改用户密码
    use mysql 
    #修改密码的语句
    update user set authentication_string=PASSWORD('123456')where user='root'; 
    #执行刷新,刷新后,密码才能生效;
     flush privileges; 
    
    第六步,配置主从库

    第一,主库的 [mysqld] 下增加配置:

    #主库配置,服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
    server_id = 1
    #开启bin-log
    log-bin=mysql-bin
    #不需要备份,需要忽略的数据库
    binlog-ignore-db=mysql
    binlog-ignore-db=performance_schema
    binlog-ignore-db=sys
    

    第二,从库配置 [mysqld] 下增加配置:

    #从库配置
    server_id=2
    #开启bin-log
    log-bin=mysql-bin
    

    第三,重启主从库,这一步也很重要,可以让配置中的server_id生效。

    第七,主从库授权,关键的一步

    第一,主库授权,进入到主库的操作命令下,执行

    grant replication slave on *.* to 'test'@'127.0.0.1' identified by '123456';
    flush privileges; #授权后需要刷新后,才能生效;
    #查看主库授权状态
    show master status; 
    

    第二步,从库授权,进入到从库的操作命令下,执行

    change master to master_host='127.0.0.1',master_user='test',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=154;
    #启动主从拷贝
    start slave; 
    #查看拷贝状态
    show slave status;
     #清除授权,授权信息也被清除掉
    reset slave all;
    #查看状态
    show slave status \G
    

    当查看从库的slave状态,下面两个状态都是yes时,代表主从库配置成功了。

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    

    最后,加点补充,为了防止从库被篡改,建立一个新的只读账户,对外只开放这个只读账号,禁止对从库数据库的操作,只能读,不能写。这样主从库的同步又多了一个保障。

    GRANT SElECT ON *.* TO 'root_readonly'@'%' IDENTIFIED BY "123456";
    #执行刷新,刷新后;
     flush privileges; 
    

    以上的操作完成后,最后再做个测试,确保主从库同步,从库不可手动修改。

    总结
    对于类似的配置,这个配置只能算中等的配置,要说复杂,还不算太复杂。多做些练习来加深印象比较好,只配置过一次二次肯定不可以,怎么样也需要配置个五六七八次,多配置几次,多犯几次错误,多思考几次为什么会这样,走心一点,关键时刻才能不掉链子。

    微信扫一扫,关注程就人生

    相关文章

      网友评论

        本文标题:Win10下Mysql主从库配置二次整理

        本文链接:https://www.haomeiwen.com/subject/qzmvdctx.html