VMware——WindowServer2012R2环境mysql5.7.14解压版安装主从复制(图解版)

目录

一、服务器信息

服务器ip 服务器角色
192.168.132.33
192.168.132.33

二、192.168.132.33主服务器上安装mysql(主)

2.1、环境变量配置

  • 解压版mysql-5.7.14-winx64.zip版本mysql到C:\software\目录下
  • 右击计算机―【属性】―【高级系统设置】―【环境变量】-【系统变量】-【新建】
    说明:由于我把mysql安装在C:\software\mysql-5.7.14-winx64文件下所以以这个路径为例
    变量名:MYSQL_HOME
    变量值:C:\software\mysql-5.7.14-winx64
  • 找到系统变量"Path"然后点击【编辑】按钮。在变量值后面加上【 ;%MYSQL_HOME%\bin;】一定要记住每增加一条变量都要用分号隔开,点击【确认】
    变量名:Path
    变量值:在原有的值后面加上:;%MYSQL_HOME%\bin;

2.2、安装

2.2.1、修改配置文件内容
  • 找到mysql安装目录,my-default.ini重命名为my.ini,编辑my.ini文件内容,如下:

    java 复制代码
    [mysql]
    port = 3306
    default-character-set=utf8
    [mysqld]
    port = 3306
    basedir=C:\\software\\mysql-5.7.14-winx64
    datadir=C:\\software\\mysql-5.7.14-winx64\\data
    max_connections=200
    character-set-server=utf8
    default-storage-engine=INNODB
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
2.2.2、初始化mysql并指定超级用户密码
  • 启动命令行,将目录切换到mysql安装目录的bin目录下。在命令行执行命令:结果如下图所示,记住下图中红框位置这个 临时密码。

    java 复制代码
    mysqld --initialize --user=mysql --console
2.2.3、安装mysql服务
  • 执行mysqld --install命令,返回结果:Service successfully installed。表示成功,如下图:
  • 快捷键win+r,执行services.msc查看服务,看看mysql服务是否已出现,如下图表示ok。
2.2.4、启动mysql服务
  • 执行如下命令,启动mysql服务,如下图:

    java 复制代码
    net start mysql 
  • 如果发生错误:执行mysqld -remove命令移除mysql服务,然后执行mysqld --install重新安装,最后在执行net start mysql启动服务。

    java 复制代码
    #移除mysql服务
    mysqld -remove
    #重新安装
    mysqld --install
    #启动服务
    net start mysql
  • 如果无法启动程序,丢失MSVCR120.dll,这是微软官网的链接 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=40784下载自己对应的版本,安装,一般可以解决。

2.2.5、登录用户管理及密码修改
  • 输入命令行如下命令,利用之前的临时密码输入即可登录数据库

    java 复制代码
    mysql -u root -p
  • 修改root用户密码

    java 复制代码
    SET PASSWORD = PASSWORD('123456');
    update mysql.user set Host='%' where HOST='localhost' and User='root';
    flush privileges;
2.2.6、开启远程访问
  • 查询所有数据库,进入mysql库,查询用户。
    说明:host为localhost表示只允许本地登录,host为ip表示为只允许指定ip用户登录,host为%为允许任意ip用户登录

    java 复制代码
    #查询所有数据库
    show databases;
    #进入mysql库
    use mysql;
    #查询用户
    select user,host from user; 
  • 新建允许远程链接mysql数据库的test用户

    java 复制代码
    #表示创建一个登录名为test,密码为123456供任意ip访问的用户(%可用具体ip替代)
    grant all on *.* to test@'%' identified by '123456' with grant option;
    flush privileges;

三、192.168.132.34从服务器上安装mysql(从)

  • 安装步骤与192.168.132.33服务器上安装mysql(主)步骤相同。

四、mysql主从配置

4.1、修改两台服务器上mysql配置文件

4.1.1、修改192.168.132.33主服务器上mysql配置(主)
  • 修改192.168.132.33主服务器my.ini文件中的配置,在[mysqld]部分增加如下内容,(server_id的值要与从服务器不同,其他内容相同,binlog_do_db的值为需要进行主从备份的数据库)

    java 复制代码
    init_connect='SET NAMES utf-8'
    innodb_buffer_pool_size=64M
    innodb_flush_log_at_trx_commit=1
    innodb_lock_wait_timeout=120
    innodb_log_buffer_size=4M
    innodb_log_file_size=256M
    interactive_timeout=120
    join_buffer_size=2M
    key_buffer_size=32M
    max_allowed_packet=16M
    max_heap_table_size=64M
    myisam_max_sort_file_size=64G
    myisam_sort_buffer_size=32M
    read_buffer_size=512kb
    read_rnd_buffer_size=4M
    skip_external_locking=on
    sort_buffer_size=256kb
    table_open_cache=256
    thread_cache_size=16
    tmp_table_size=64M
    wait_timeout=120
    server_id =1
    log_bin=C:\\software\\mysql-5.7.14-winx64\\mysqlbin
    #binlog记录内容的方式,记录被操作的每一行
    binlog_format=ROW
    #减少记录日志的内容,只记录受影响的列
    binlog_row_image=minimal
    #指定需要复制的数据库名为db_test,如果备份多个数据库,重复设置这个选项即可
    binlog_do_db=db_test
    #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
    binlog_ignore_db=mysql
    binlog_ignore_db=performance_schema
    binlog_ignore_db=information_schema
    binlog_ignore_db=sys
    # 这个参数要加上,否则不会给更新的记录些到二进制文件里(未测试)
    log-slave-updates=1
    #开启慢查询日志
    slow_query_log=1
    slow_query_log_file=C:\\software\\mysql-5.7.14-winx64\\mysql_slow_query.log
    long_query_time=10
    log_error=C:\\software\\mysql-5.7.14-winx64\\mysql_error.log
  • 重启192.168.132.33主服务器MySQL服务

4.1.2、修改192.168.132.34从服务器上mysql配置(从)
  • 修改192.168.132.34从服务器my.ini文件中的配置,在[mysqld]部分增加如下内容,(server_id 的值要与主服务器不同,其他内容相同,binlog_do_db的值为需要进行主从备份的数据库)

    java 复制代码
    init_connect='SET NAMES utf-8'
    innodb_buffer_pool_size=64M
    innodb_flush_log_at_trx_commit=1
    innodb_lock_wait_timeout=120
    innodb_log_buffer_size=4M
    innodb_log_file_size=256M
    interactive_timeout=120
    join_buffer_size=2M
    key_buffer_size=32M
    max_allowed_packet=16M
    max_heap_table_size=64M
    myisam_max_sort_file_size=64G
    myisam_sort_buffer_size=32M
    read_buffer_size=512kb
    read_rnd_buffer_size=4M
    skip_external_locking=on
    sort_buffer_size=256kb
    table_open_cache=256
    thread_cache_size=16
    tmp_table_size=64M
    wait_timeout=120
    server_id =2
    log_bin=C:\\software\\mysql-5.7.14-winx64\\mysqlbin
    #binlog记录内容的方式,记录被操作的每一行
    binlog_format=ROW
    #减少记录日志的内容,只记录受影响的列
    binlog_row_image=minimal
    #指定需要复制的数据库名为db_test,如果备份多个数据库,重复设置这个选项即可
    binlog_do_db=db_test
    #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
    binlog_ignore_db=mysql
    binlog_ignore_db=performance_schema
    binlog_ignore_db=information_schema
    binlog_ignore_db=sys
    # 这个参数要加上,否则不会给更新的记录些到二进制文件里(未测试)
    log-slave-updates=1
    #开启慢查询日志
    slow_query_log=1
    slow_query_log_file=C:\\software\\mysql-5.7.14-winx64\\mysql_slow_query.log
    long_query_time=10
    log_error=C:\\software\\mysql-5.7.14-winx64\\mysql_error.log
  • 如果是复制的192.168.132.33服务器到192.168.132.34服务器,需要修改192.168.132.34服务器C:\software\mysql-5.7.14-winx64\data\auto.conf文件中的值,需要与192.168.132.33服务器中的值不同。
    一定要修改值不一样,此处大坑。。。。。。

  • 重启192.168.132.34从服务器MySQL服务

4.2、创建两台服务器Replication用户

4.2.1、192.168.132.33主服务器上创建Replication用户(主)
  • 创建Repl用户

    java 复制代码
    grant all on *.* to 'repl'@'%' identified by '123456' with grant option;
    grant replication slave on *.* to 'repl'@'%';
    grant replication client,replication slave on *.* to 'repl'@'%' identified by '123456';
    flush privileges;
4.2.2、192.168.132.34从服务器上创建Replication用户(从)
  • 创建Repl用户

    java 复制代码
    grant all on *.* to 'repl'@'%' identified by '123456' with grant option;
    grant replication slave on *.* to 'repl'@'%';
    grant replication client,replication slave on *.* to 'repl'@'%' identified by '123456';
    flush privileges;

4.3、查看192.168.132.33主服务器的mysql bin log位置(主)

  • 查看192.168.132.33主服务器上mysql bin log位置,执行如下命令:

    java 复制代码
    #锁定表,禁止所有操作。防止bin log位置发生变化
    flush tables with read lock;
    #查看192.168.132.33主服务器上bin log位置
    show master status;
    #解除192.168.132.33主服务器上mysql table的锁定
    unlock tables;
  • 其中file的值mysqlbin.000005和Position的值154在从库设置Slave Replication中会使用到 ,执行如下命令:

4.4、设置192.168.132.34从服务器的Slave Replication(从)

  • 设置192.168.132.34从服务器上的Slave Replication,执行如下命令:

    java 复制代码
    stop slave;
    change master to master_host = '192.168.136.33', master_user = 'repl', 
    master_password = '123456', master_port = 3306, master_connect_retry=30, master_log_file = 'mysqlbin.000005',master_log_pos = 154; 
    start slave;

4.5、查看192.168.132.34从服务器是否设置成功

  • 查看192.168.132.34从服务器是否设置成功,执行如下命令:

    java 复制代码
    show slave status\G;
  • 其中Slave_IO_Running:Yes Slave_SQL_Running:Yes表示主从复制已成功,如下图:

五、mysql主从复制测试

5.1、192.168.132.33主服务器创建数据库

  • 创建db_test数据库,创建表t_user并新增一条数据,如下图:

5.2、192.168.132.34从服务器查看192.168.132.33主服务器创建的数据库

  • 查看db_test数据库、t_user表及表中数据,如下图:

相关推荐
shyの同学1 小时前
分布式ID生成方案:数据库号段、Redis与第三方开源实现
redis·分布式·mysql·id
cg50174 小时前
MySQL数据库复杂的增删改查操作
数据库·mysql
夏炎正好眠9 小时前
mysql练习
数据库·mysql
驜鸈11 小时前
MySQL 的EXPLAIN 计划 type 字段详细说明
android·数据库·mysql
嗨起飞了13 小时前
MySQL入门手册
数据库·mysql
程序员的世界你不懂13 小时前
Mysql配置文件My.cnf(my.ini)配置参数说明
数据库·mysql·百度·新浪微博
ChinaRainbowSea13 小时前
MySQL 索引的数据结构(详细说明)
java·数据结构·数据库·后端·mysql
追风赶月、14 小时前
【MySQL】事务(隔离性、MVCC)
数据库·mysql
Lemon_man_15 小时前
基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
python·mysql·django
A仔不会笑17 小时前
MySQL面试篇——性能优化
java·数据库·mysql·面试·性能优化