热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mysql8.0windows下GTID模式主从同步搭建

Mysql8.0windows下GT

Mysql 8.0 GTID主从同步搭建


 


一、安装mysql软件

 


1.上传并解压mysql-8.0.28-winx64.zip安装包




2.初始化



8.0版本,初始化,以管理员方式运行cmd

C:\Mysql8.0\bin\mysqld --initialize-insecure --user=mysql --console --basedir=C:\Mysql8.0 --datadir=C:\Mysql8.0\Data


3.编辑C:\Mysql8.0\my.ini 配置文件



[mysqld]
basedir = C:\Mysql8.0
datadir = C:\Mysql8.0\Data
port=3306
server_id=138
character-set-server = utf8mb4
default-time-zOne= '+8:00'
log_timestamps = SYSTEM
secure_file_priv=
default_authentication_plugin=mysql_native_password
skip_name_resolve
log_bin_trust_function_creators = 1
open_files_limit = 65535
max_cOnnections= 2000
max_connect_errors = 10000
table_open_cache = 1024
max_allowed_packet = 32M
log-bin
binlog_format = row
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
innodb_buffer_pool_size = 10240M
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_flush_log_at_trx_commit = 0
innodb_log_buffer_size = 32M
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
#注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项
expire_logs_days = 30
#配置GTID同步参数
gtid-mode=ON
enforce-gtid-cOnsistency=on
relay_log_recovery = 1
log_slave_updates=1
master_info_repository = TABLE
relay_log_info_repository = TABLE
report_host=xxx.xxx.xxx
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys

4.安装mysql服务



服务名称设置为Mysql_Server8.0

C:\Mysql8.0\bin\mysqld install Mysql_Server8.0 --defaults-file="C:\Mysql8.0\my.ini"


5.启动Mysql_Server8.0服务



net start Mysql_Server8.0


6.配置环境变量



setx PATH "C:\Mysql8.0\bin"


7.修改密码和允许远程登陆



C:\Users\Administrator>mysql -uroot -p
Enter password:
ERROR 1130 (HY000): Host '::1' is not allowed to connect to this MySQL server

解决办法:在my.ini文件中加入下面参数,然后重启mysql服务

skip-grant-tables
shared-memory

修改密码

-- 免密登录
C:\Users\Administrator>mysql -uroot -p
mysql> flush privileges;
-- 修改密码
mysql> alter user root@'localhost' identified with mysql_native_password by 'root123';
mysql> grant all on *.* to root@'localhost' with grant option;
mysql> create user root@'%' identified with mysql_native_password by 'root123';
mysql> grant all on *.* to root@'%' with grant option;
mysql> flush privileges;
mysql> select user,host,grant_priv,super_priv,authentication_string,password_last_changed from mysql.user;
注:mysql 8.0远程连接,在参数文件的[mysqld]下添加:
default_authentication_plugin=mysql_native_password


二、搭建主从

 


1. 配置master my.cnf文件

[mysqld]
basedir = C:\Mysql8.0
datadir = C:\Mysql8.0\Data
port=3306
server_id=137
character-set-server = utf8mb4
default-time-zOne= '+8:00'
log_timestamps = SYSTEM
secure_file_priv=
default_authentication_plugin=mysql_native_password
skip_name_resolve
log_bin_trust_function_creators = 1
open_files_limit = 65535
max_cOnnections= 2000
max_connect_errors = 10000
table_open_cache = 1024
max_allowed_packet = 32M
log-bin
binlog_format = row
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
innodb_buffer_pool_size = 10240M
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_flush_log_at_trx_commit = 0
innodb_log_buffer_size = 32M
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
#注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项
expire_logs_days = 30
gtid-mode=ON
enforce-gtid-cOnsistency=on
relay_log_recovery = 1
log_slave_updates=1
master_info_repository = TABLE
relay_log_info_repository = TABLE
report_host=xxx.xxx.xxx.xxx
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys

2. 配置slave my.cnf文件



[mysqld]
basedir = C:\Mysql8.0
datadir = C:\Mysql8.0\Data
port=3306
server_id=138
character-set-server = utf8mb4
default-time-zOne= '+8:00'
log_timestamps = SYSTEM
secure_file_priv=
default_authentication_plugin=mysql_native_password
skip_name_resolve
log_bin_trust_function_creators = 1
open_files_limit = 65535
max_cOnnections= 2000
max_connect_errors = 10000
table_open_cache = 1024
max_allowed_packet = 32M
log-bin
binlog_format = row
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
innodb_buffer_pool_size = 10240M
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_flush_log_at_trx_commit = 0
innodb_log_buffer_size = 32M
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
#注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项
expire_logs_days = 30
gtid-mode=ON
enforce-gtid-cOnsistency=on
relay_log_recovery = 1
log_slave_updates=1
master_info_repository = TABLE
relay_log_info_repository = TABLE
report_host=xxx.xxx.xxx.xxx
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys

3. 重启master. slave 服务



mysql> flush privileges; #测试没刷新权限,Executed_Gtid_Set没出来
mysql> show master status;


4. 主库创建复制用户



mysql> create user repl@'%' identified with mysql_native_password by 'repl123';
mysql> grant all on *.* to repl@'%' with grant option;
mysql> select user,host,grant_priv,password_last_changed,authentication_string from mysql.user;


5. 主库创建测试库



mysql> create database testdb;
mysql> use testdb;
mysql> create table mytb1(id int,name varchar(30));
mysql> insert into mytb1 values(1,'a'),(2,'b');


6.主库导出



– 搭建期间,导出时不能加–set-gtid-purged=off参数

mysqldump -uroot -proot123 --single-transaction --hex-blob --routines --events --triggers --source-data=2 --databases testdb --default-character-set=utf8 --max_allowed_packet=512M >C:\slave.sql

注意,8.0版本,不要用master-data参数,否则备库导入会抛出如下错误:

C:\Users\Administrator>mysql -uroot -proot123 mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WARNING: --master-data is deprecated and will be removed in a future version. Us' at line 1
-- 因为备份文件中,多一行警告信息无法执行。
WARNING: --master-data is deprecated and will be removed in a future version. Use --source-data instead.

7. 备库导入



因为不是干净的备库,需要先执行reset master,否则导入会报错

mysql> reset master;
mysql> show master status;
mysql -uroot -proot123 mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)


8. 备库配置GTID同步



mysql> change master to
master_host='xxx.xxx.xxx.xxx',
master_port=3306,
master_user='repl',
master_password='repl123',
master_auto_position=1;


9. 备库启动同步



mysql> start slave;
mysql> show slave status \G;


10. 测试同步状态



– 主库更新数据:

mysql> insert into mytb1 values(3,'c'),(4,'d');

–备库检查同步:

mysql> select * From testdb.mytb1;

结论: 同步正常。



推荐阅读
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • mysqldinitializeconsole失败_mysql03误删除了所有用户解决办法
    误删除了所有用户解决办法第一种方法(企业常用)1.将数据库down掉[rootdb03mysql]#etcinit.dmysqldstopShuttingdownMySQL..SU ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
author-avatar
手机用户2502880821
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有