• VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)


    目录

    一、服务器信息

    服务器ip服务器角色
    192.168.132.35主从
    192.168.132.36主从

    二、192.168.132.35服务器上安装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文件内容,如下:

      [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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      在这里插入图片描述

    2.2.2、初始化mysql并指定超级用户密码
    • 启动命令行,将目录切换到mysql安装目录的bin目录下。在命令行执行命令:结果如下图所示,记住下图中红框位置这个 临时密码。

      mysqld --initialize --user=mysql --console
      
      • 1

      在这里插入图片描述

    2.2.3、安装mysql服务
    • 执行mysqld --install命令,返回结果:Service successfully installed。表示成功,如下图:

    在这里插入图片描述

    • 快捷键win+r,执行services.msc查看服务,看看mysql服务是否已出现,如下图表示ok。
      在这里插入图片描述
    2.2.4、启动mysql服务
    • 执行如下命令,启动mysql服务,如下图:

      net start mysql 
      
      • 1

    在这里插入图片描述

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

      #移除mysql服务
      mysqld -remove
      #重新安装
      mysqld --install
      #启动服务
      net start mysql
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 如果无法启动程序,丢失MSVCR120.dll,这是微软官网的链接 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=40784 下载自己对应的版本,安装,一般可以解决。
      在这里插入图片描述

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

      mysql -u root -p
      
      • 1

      在这里插入图片描述

    • 修改root用户密码

      SET PASSWORD = PASSWORD('123456');
      update mysql.user set Host='%' where HOST='localhost' and User='root';
      flush privileges;
      
      • 1
      • 2
      • 3

      在这里插入图片描述

    2.2.6、开启远程访问
    • 查询所有数据库,进入mysql库,查询用户。
      说明:host为localhost表示只允许本地登录,host为ip表示为只允许指定ip用户登录,host为%为允许任意ip用户登录

      #查询所有数据库
      show databases;
      #进入mysql库
      use mysql;
      #查询用户
      select user,host from user; 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    在这里插入图片描述

    • 新建允许远程链接mysql数据库的test用户

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

    在这里插入图片描述

    三、192.168.132.36服务器上安装mysql(

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

    四、mysql互为主从配置

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

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

      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
    • 重启192.168.132.35主服务器MySQL服务
      在这里插入图片描述

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

      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
    • 如果是复制的192.168.132.35服务器到192.168.132.36服务器,需要修改192.168.132.36服务器C:\software\mysql-5.7.14-winx64\data\auto.conf文件中的值,需要与192.168.132.35服务器中的值不同。
      一定要修改值不一样,此处大坑。。。。。。

    • 重启192.168.132.36从服务器MySQL服务
      在这里插入图片描述

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

    4.2.1、192.168.132.35服务器上创建Replication用户
    • 创建Repl用户

      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;
      
      • 1
      • 2
      • 3
      • 4

    在这里插入图片描述

    4.2.2、192.168.132.36服务器上创建Replication用户
    • 创建Repl用户

      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;
      
      • 1
      • 2
      • 3
      • 4

    在这里插入图片描述

    4.3、查看两台服务器的mysql bin log位置

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

      #锁定表,禁止所有操作。防止bin log位置发生变化
      flush tables with read lock;
      #查看Master1服务器上bin log位置
      show master status;
      #解除两台主机mysql table的锁定
      unlock tables;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      在这里插入图片描述

    • 查询出的mysql bin log位置在步骤4.4步骤中会使用。

    4.3.2、查看192.168.132.36服务器上mysql bin log位置
    • 查看mysql bin log位置,执行如下命令:
      #锁定表,禁止所有操作。防止bin log位置发生变化
      flush tables with read lock;
      #查看Master1服务器上bin log位置
      show master status;
      #解除两台主机mysql table的锁定
      unlock tables;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      在这里插入图片描述
    • 查询出的mysql bin log位置在步骤4.4步骤中会使用。

    4.4、设置两台服务器的Slave Replication

    4.4.1、设置192.168.132.35服务器上Slave Replication
    • 设置Slave Replication,执行如下命令:

      stop slave;
      change master to master_host = '192.168.136.36', master_user = 'repl', 
      master_password = '123456', master_port = 3306, master_connect_retry=30, master_log_file = 'mysqlbin.000009',master_log_pos = 154; 
      start slave;
      
      • 1
      • 2
      • 3
      • 4

      在这里插入图片描述

    4.4.2、设置192.168.132.36服务器上Slave Replication
    • 设置Slave Replication,执行如下命令:

      stop slave;
      change master to master_host = '192.168.136.35', master_user = 'repl', 
      master_password = '123456', master_port = 3306, master_connect_retry=30, master_log_file = 'mysqlbin.000009',master_log_pos = 154; 
      start slave;
      
      • 1
      • 2
      • 3
      • 4

      在这里插入图片描述

    4.5、查看两台主机是否设置成功

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

      show slave status\G;
      
      • 1
    • 其中Slave_IO_Running:Yes Slave_SQL_Running:Yes表示主从搭建已成功,如下图:
      在这里插入图片描述

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

      show slave status\G;
      
      • 1
    • 其中Slave_IO_Running:Yes Slave_SQL_Running:Yes表示主从搭建已成功,如下图:
      在这里插入图片描述

    五、mysql互为主从测试

    5.1、192.168.132.35服务器创建数据库,并在192.168.132.36服务器上查看是否有192.168.132.35服务器创建的数据库

    • 192.168.132.35服务器创建db_test数据库,创建表t_user并新增一条数据,如下图:
      在这里插入图片描述

    • 192.168.132.36服务器上查看db_test数据库、t_user表及表中数据,如下图:
      在这里插入图片描述

    • 192.168.132.35、192.168.132.36服务器把创建的数据库删除,如下图:

    5.2、192.168.132.36服务器创建数据库,并在192.168.132.35服务器上查看是否有192.168.132.36服务器创建的数据库 - 192.168.132.35、192.168.132.36服务器把创建的数据库删除,如下图:

    • 删除192.168.132.36服务器上创建的db_test数据库,如下图:
      在这里插入图片描述

    • 刷新192.168.132.35服务器上数据库,其中db_test库也同步删除了,如下图:
      在这里插入图片描述

    六、报错解决

    6.1、报错slave failed to initialize relay log info structure from the repository

    • 解决方式

      #重置slave
      reset slave
      
      • 1
      • 2

    6.2、报错Could not find first log file name in binary log index file

    • 解决方式

      #停止报错机器的slave
      stop slave;
      #执行flush logs;因为刷新日志file的位置会+1,使2台机器的mysqld-bin的相同
      flush logs;
      #在启动slave
      start slave;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    6.3、报错Client requested master to start replication from position > file size

    • 解决方式

      #查看bin log位置
      show master status;
      #重新执行 slave replication
      stop slave;
      change master to master_host = '192.168.136.36', master_user = 'repl', 
      master_password = '123456', master_port = 3306, master_connect_retry=30, master_log_file = 'mysqlbin.000009',master_log_pos = 154; 
      start slave;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
  • 相关阅读:
    网络安全(黑客)自学
    高速公路车路协同网络需求研究
    金仓数据库KingbaseES本地化支持(6. 附录)
    信号与系统分析《1》
    02-Vue按键修饰符,自定义指令
    Android 预置应用到系统内
    Android okhttp3.0配置https信任所有证书
    [datawhale202211]跨模态神经搜索实践:Jina生态
    Matlab最小二乘平面拟合(SVD方法)—点云处理及可视化第3期
    百度安全多篇议题入选Blackhat Asia以硬技术发现“芯”问题
  • 原文地址:https://blog.csdn.net/li1325169021/article/details/134541832