ubuntu mysql混合开发_mysql5.7主从同步 ubuntu

实现环境:

| System   | mysql      |  ip        |

|主ubuntu  | mysql-5.7.24   | 10.192.209.122 |

|从ubuntu    | mysql-5.7.39   | 10.192.209.43   |

注:从服务器的mysql版本最好和主服务器相同,或者大于主服务器版本

MySQL主从同步的实现部分:

首先是Master(主节点)的配置:

#主Master服务器配置-----------------------------------------------------------------------------------------------------------------------

1.停掉slave端数据库服务

/etc/init.d/mysql stop

或者service mysqld stop

2.修改配置文件:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

1.主数据库(Master)配置:

#***********************************master my.cnf配置开始******************************

#主库日志记录文件位置或名称前缀

log_bin = /var/lib/mysql/mylog-bin.log

#同步日志记录的频率,1为每条都记录,安全但效率低

sync_binlog = 1

#server的id,不能与相同id的mysql主从连接

server-id=1

#同步数据库,如果多库,就以此格式另写几行即可

binlog-do-db=test

#无需同步的数据库,以下几行基本一样,无需改动

binlog-ignore-db = cluster

binlog-ignore-db = mysql

binlog-ignore-db = performance_schema

binlog-ignore-db = information_schema

#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)

#混合模式复制

binlog_format=MIXED

#binlog过期清理时间

expire_logs_days=7

#binlog每个日志文件大小

max_binlog_size=20M

#*********************master my.conf配置文件结束*****************************************

binlog_do_db            = your databasename(需要主从同步的数据库)

log-slave-updates=1    #事件自动更新到日志中

sync_binlog=1          #日志文件同步到磁盘上

2.登陆mysql执行

mysql -u root -p

mysql> show master status;

+------------------+----------+--------------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------------+------------------+-------------------+

| mysql-bin.000006 | 787 | weblinux_scheduler | | |

+------------------+----------+--------------------+------------------+-------------------+

1 row in set (0.01 sec)

这个File:mysql-bin.000006 和Position787一会儿要在从库用到

注意:每次修改数据时这两个值都会改变,所以在查看了这两个值之后,不要操作主服务器、直接到从服务器配置完成之后,否则这个值对应不上会同步失败

3.重启mysql服务,mysql命令行执行:

show master status;#记录文件名以及紧跟的当前行数数字

4.创建并授权用户,后两个slave分别是用户名和密码

注意:此处ip是slave端的ip,非本机ip,本人因为这个错误浪费好多时间。

grant replication slave ,replication client on *.* to slave@'10.192.209.43' identified by "slave";

flush privileges; #权限修改立即生效

flush tables with read lock; #锁定数据库为只读,确保备份数据一致性

5.退出mysql命令行,执行备份命令

#备份当前所有数据库,可以参考备份单库

mysqldump -u root -p --all-databases --master-data > mysql_bak.sql

#从服务器的配置-----------------------------------------------------------------------------------------------------------------------

1.停掉slave端数据库服务

service mysql stop

2.修改配置文件:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

#从数据库(Slave)配置:

#***********************************slave my.cnf配置开始******************************

#从库日志记录文件位置或名称前缀

log_bin = /var/lib/mysql/mylog-bin.log

#同步日志记录的频率,1为每条都记录,安全但效率低

sync_binlog = 1

#server的id,不能与相同id的mysql主从连接

server-id=2

#从库日志忽略的数据库名称,不记录

#这里记录从库的binlog是为了安全,如果觉得没必要,可以去掉从库binlog的配置

binlog-ignore-db = cluster

binlog-ignore-db = mysql

binlog-ignore-db = performance_schema

binlog-ignore-db = information_schema

#此处添加需要同步的数据库名称,那么它会只接收这个数据库的信息,多个数据库需同步按照此格式另写几行即可

#这里同步数据有两种思路,一种是主服务器只发从库需要的,在主库指定;一种是主服务器把所有数据同步过来,从库按需过滤接收

#为了让配置更详细些,此处配置了从库过滤接收的配置

replicate-do-db=test

#忽略接收的库名

replicate-ignore-db = cluster

replicate-ignore-db = mysql

replicate-ignore-db = performance_schema

replicate-ignore-db = information_schema

#跳过所有错误继续

slave-skip-errors=all

#设置延时时间

slave-net-timeout=60

#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)

binlog_format=MIXED #混合模式复制

expire_logs_days=7 #binlog过期清理时间

max_binlog_size=20M #binlog每个日志文件大小

#***********************************slave my.cnf配置结束******************************

3.保存退出:wq

4.启动mysqld服务

/etc/init.d/mysql start

或service mysqld start

5.导入主服务器数据库备份的数据

mysqldump -u root -p your databasename < ~/mysql_bak.sql

source mysql_bak.sql(如果你的数据库是新建的要用这条命令,我执行上面的命令始终没成功,又浪费了很多时间)

6.在从服务器slave端的mysql>指定master端的相关参数(登陆mysql后执行)

mysql>CHANGE MASTER TO

MASTER_HOST='10.192.209.122',

MASTER_PORT=3307,

MASTER_USER='slave',

MASTER_PASSWORD='slave',

MASTER_LOG_FILE='mysql-bin.000006',

MASTER_LOG_POS=787;

注:最后两行是之前在主服务器show master status 所记录的数据

如果之前已经启动了一个slave进程,那么以上的命令会失效,并提示stop slave first,所以先stop slave; 然后重试

7.启动slave

start slave;

show slave status\G #注意,没有分号

输出如下,显示两个都为yes即成功,可以测试一下

mysql> show slave status;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.192.209.122

Master_User: replication

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000006

Read_Master_Log_Pos: 787

Relay_Log_File: mysql-relay-log.000004

Relay_Log_Pos: 441

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 52360

Relay_Log_Space: 597

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

"""

----------此处执行从服务器相关配置全部完成再执行下面2步--------

6.从服务器启动slave(前提是配置好从服务器)

7.从服务器启动完毕后关闭表锁

unlock tables;

#从服务器的配置-----------------------------------------------------------------------------------------------------------------------

有时要清除从库的所有复制信息,如切换为不同的Master, 主从重做等;Reset slave是一个比较危险的命令,所以在执行前一定要准备知道其含义。

1. 命令在slave上执行,执行前一定要停掉slave(stop slave)

2. 执行reset slave后,会清除复制相关的所有信息,包括:master.info, relay-log.info, 及无条件删除所有的中继日志(relay logs). 注意是无条件的,也就是不管理你Slave SQL线程是否把所有的relay log重放完了。

3. 注意,stop slave后,先保存show slave status信息,然后再执行reset slave. 一般这个信息都会有用的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于逐项作用函数的用法

关于逐项作用函数的用法讲一下Thread这个函数的用法&#xff0c;其中后面两个用法很好用&#xff0c;也常常被忽略。用法一&#xff1a;比较常用用法二&#xff1a;我觉得这一种是很实用的有拓展的方法用法三&#xff1a;构造一种映射关系&#xff0c;在配合 Association[] 关联…

IIS Service Unavailable问题

应用程序池被两个.Net版本的网站使用&#xff0c;不同.Net版本的网站应该用不同的应用程序池&#xff0c;服务器上最好是每个网站一个应用程序池&#xff0c;避免某个网站导致应用程序池停止运行而影响其他网站。

博客园的博客终于开通了

楼主来了博客园不知不觉已经1年5个月&#xff0c;实际上早就知道博客园的存在&#xff0c;一直没注册。 在园子里&#xff0c;感觉时间过得好快&#xff0c;期间学习到了很多东西&#xff0c;唯一不足的是没有及时记下心得和笔记。 现在有些知识点又忘得差不多&#xff0c;好记…

linux搭建java开发环境_linux中搭建java开发环境

今天试着在Linux下面搭建java开发环境&#xff0c;现总结一下具体步骤。1、JDK的安装1.6 版本cd /optmkdir java执行下面命令安装JDK(首先创建/opt/java目录)tar -xvf jdk-7u7-linux-i586.tar.gz -C /opt/javaln -s /opt/java/jdk1.7.0_09 /opt/java/jdk 创建一个链接vi /etc/f…

js cookie操作

//cookie操作3个方法//设置cookiefunction setCookie(name, value) {var argv setCookie.arguments;var argc setCookie.arguments.length;var expires (argc > 2) ? argv[2] : null;if (expires ! null) {var LargeExpDate new Date();LargeExpDate.setTime(LargeExpD…

SQLServer常用系统视图

数据库 sys.databases 数据库文件 sys.master_files对象 sys.objects表 sys.tables存储过程 sys.procedures列 sys.columns架构 sys.schemas索引 sys.indexes

java8多线程_Java8——三种多线程方式

1、多线程的使用方式1.1、继承Thread类继承Thread并重写run()方法&#xff0c;Thread类中的start方法会去调用系统的方法执行相应的线程。实际上Thread也是实现了Runable接口的&#xff0c;从该类的文档中我们能找到。1.2、实现Runable接口实现Runable接口&#xff0c;并重写ru…

重构指南 - 引入参数对象(Introduce Parameter Object)

当一个方法的参数超过3个以上&#xff0c;就可以考虑将参数封装成一个对象。将参数封装成对象后提高了代码的可读性&#xff0c;并且该参数对象也可以供多个方法调用&#xff0c;以后如果增加删除参数&#xff0c;方法本身不需要修改&#xff0c;只需要修改参数对象就可以。重构…

git clone 时候出现Please make sure you have the correct access rights and the repository exists.

输入 git clone 命令时出现Please make sure you have the correct access rights and the repository exists.错误&#xff0c;出现改问题的原因是git服务器没有存储本地ssh密钥。 解决步骤&#xff1a; 1. 删除 .ssh 文件夹【C:\Users\(本地用户名)\.ssh】 中的 known_host…

java io之图片存取

一&#xff1a;建表 二&#xff1a;获取数据库连接 1&#xff1a;导入mysql的驱动jar包&#xff0c;mysql-connector-java-5.1.8-bin.jar 2&#xff1a;写代码连接数据库&#xff0c;如下&#xff1a; 1 /**2 * 3 */ 4 package com.hlcui.file; 5 6 import java.sql.Connec…

docker mysql输入中文_Docker解决终端无法输入中文的问题

前言&#xff1a;某日在docker里搭建了一套MySQL服务&#xff0c;发现在MySQL命令行内无法输入中文 中文显示也以?代替&#xff0c;起初以为是MySQL字符集的问题 检查之后未解决问题&#xff0c;又退出到容器终端 发现同样不能输入中文&#xff0c;由此推断 是系统字符集出现问…

基于java的程序启动出错Could not create the Java virtual machine

1.java版本过低。 2.版本冲突&#xff1a;1)开始→运行&#xff0c;cmd进入控制台后&#xff0c;输入命令java -version查看jdk版本会提示版本是1.3.1&#xff0c;而非已安装的jdk1.6&#xff1b; 2)修改系统环境变量Path&#xff0c;将jdk1.6的路径放在其他jdk路径前面即可。

An error occurred while searching for implementations of method

1&#xff1a;在我安装完scala的插件后&#xff0c;在打开方法的实现类&#xff08;open implementactions&#xff09;的时候&#xff0c;抛出这个异常&#xff0c;后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的。 An error occurred while searching fo…

remote: Incorrect username or password ( access token ) fatal: Authentication failed for gitee

gitee推送到远程仓库时提示错误 remote: Incorrect username or password ( access token ) fatal: Authentication failed for ‘https://gitee.com/***/***.git/’ 解决办法&#xff1a;清除本地的gitee用户名和密码 git config --system --unset credential.helper 再执行…

go操作mysql创建多对多_Django 数据库表多对多的创建和增删改查

前面已经学习了在Django里面如何对单表的操作&#xff0c;同时也学习了1对多(单个外键)的表的操作。接下来&#xff0c;我们看看多对多(多个外键)的关系如何创建和管理。比如说&#xff0c;我们有一个主机表&#xff0c;也有一个应用程序表&#xff0c;一个主机可以对应多个程序…

SQL Server 日志清理、数据文件收缩

use DBNameDUMP TRANSACTION DBName WITH NO_LOG BACKUP LOG DBName WITH NO_LOGDBCC SHRINKFILE (DBName, 1);--收缩数据库DBCC SHRINKFILE (DBName_Log, 1);--收缩日志