Mysql 主从 主主简单配置

##创建两台版本相同的mysql

1.主节点修改配置文件 /etc/mysql/my.cf

log-bin=master-bin    #启用二进制日志 默认可以不改

# binary logging format - mixed recommended

binlog_format=mixed

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id  = 10     #serverid 默认可以不改

修改后重启数据库

2.mysql主服务器创建一个只用于复制的用户:

MariaDB [(none)]> grant replication client,replication slave on *.* to ‘repluser‘@‘192.168.%.%‘ identified by ‘replpass‘;

MariaDB [(none)]> flush privileges;

3.修改从节点服务器配置文件:

# Replication Master Server (default)

# binary logging is required for replication

#log-bin=mysql-bin      #关闭二进制

# binary logging format - mixed recommended

binlog_format=mixed

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id       = 20                 #修改id编号

relay-log       = relay-bin          #添加中继服务日志

read-only       = on                 #添加只读选项

MariaDB [(none)]> show global variables like ‘%only%‘;        查看只读参数

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

| Variable_name | Value |

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

| read_only     | OFF   |

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

1 row in set (0.00 sec)

MariaDB [(none)]>

4.然后修改数据库中继配置:

MASTER_HOST = ‘host_name‘ 主节点地址

MASTER_USER = ‘user_name‘ 有复制权限用户名称

MASTER_PASSWORD = ‘password‘ 有复制权限用户的密码

master_heartbeat_period=2;心跳信息时间间隔

master_log_file=‘master-bin.000001 主服务器二进制日志文件  # 查看主节点当前二进制日志文件位置

MariaDB [mysql]> show master status;

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| master-bin.000001 |      497 |              |                  |

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

1 row in set (0.00 sec)

master_log_pos=497 主服务器二进制日志开始位置

从服务器:

MariaDB [(none)]> change master to master_host=‘192.168.1.146‘,master_user=‘repluser‘,master_password=‘replpass‘,master_log_file=‘master-bin.000001‘,master_log_pos=497,master_connect_retry=5,master_heartbeat_period=2;

Query OK, 0 rows affected (0.06 sec)

MariaDB [(none)]> start slave

创建完成后已经成功了;查看从节点状态:

MariaDB [(none)]> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.146

Master_User: repluser

Master_Port: 3306

Connect_Retry: 5

Master_Log_File: master-bin.000001

Read_Master_Log_Pos: 497

Relay_Log_File: relay-bin.000003

Relay_Log_Pos: 530

Relay_Master_Log_File: master-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: 497

Relay_Log_Space: 818

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

1 row in set (0.00 sec)

两个主要线程是否启动:如果没启动执行 start slave 命令

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

5.配置完成,查看是否有日志:

[[email protected] mydata]# ll

total 29776

-rw-rw----. 1 mysql mysql    16384 Nov 23 19:44 aria_log.00000001

-rw-rw----. 1 mysql mysql       52 Nov 23 19:44 aria_log_control

-rw-rw----. 1 mysql mysql 18874368 Nov 23 19:44 ibdata1

-rw-rw----. 1 mysql mysql  5242880 Nov 23 19:44 ib_logfile0

-rw-rw----. 1 mysql mysql  5242880 Nov 23 19:04 ib_logfile1

-rw-rw----. 1 mysql mysql        5 Nov 23 19:44 localhost.pid

-rw-rw----. 1 mysql mysql       82 Nov 23 20:05 master.info

drwx------. 2 mysql root      4096 Nov 23 19:03 mysql

-rw-rw----. 1 mysql mysql    28229 Nov 23 19:03 mysql-bin.000001

-rw-rw----. 1 mysql mysql  1038814 Nov 23 19:03 mysql-bin.000002

-rw-rw----. 1 mysql mysql      264 Nov 23 19:44 mysql-bin.000003

-rw-rw----. 1 mysql mysql       57 Nov 23 19:04 mysql-bin.index

drwx------. 2 mysql mysql     4096 Nov 23 19:03 performance_schema

-rw-rw----. 1 mysql mysql      245 Nov 23 20:05 relay-bin.000001

-rw-rw----. 1 mysql mysql       19 Nov 23 20:05 relay-bin.index

-rw-rw----. 1 mysql mysql       43 Nov 23 20:05 relay-log.info

drwx------. 2 mysql root      4096 Nov 23 19:03 test

[[email protected] mydata]#

6.主节点创建库或表查看从节点是否有复制;

MariaDB [mydb]> create database mydb;

MariaDB [mydb]> create table tb1(id int);

双主模式配置:

主主:

互为主从:

1、数据不一致;

2、自动增长id

定义一个节点使用奇数id

auto_increment_offset=1

auto_increment_increment=2

定义另一个节点使用偶数id

auto_increment_offset=2

auto_increment_increment=2

(1) 各自使用不同的server id

(2) 都启用binlog和relay log

(3) 定义自动增长的id字段的增长方式

(4) 都授权有复制权限的用户账号

(5) 各自把对方指定为主服务器

节点1 my.cf配置:

server-id = 10

log-bin=master-bin

relay-log=relay-bin

binlog_format=mixed

auto_increment_offset=1

auto_increment_increment=2

节点2 my.cf配置:

server-id = 20

log-bin=master-bin

relay-log=relay-bin

binlog_format=mixed

auto_increment_offset=1

auto_increment_increment=2

两个节点创建可以复制权限的用户:

grant replication slave,replication client on *.* to ‘repluser‘@‘192.168.%.%‘ identified by ‘replpass‘;

查看两个节点的二进制信息:

节点一:

MariaDB [(none)]> show master status;

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| master-bin.000003 |      507 |              |                  |

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

1 row in set (0.00 sec)

MariaDB [mydb]> change master to master_host=‘192.168.1.109‘,master_user=‘repluser‘,master_password=‘replpass‘,master_log_file=‘master-bin.000001‘,master_log_pos=507;

启动进程:start slave;

节点二:

MariaDB [(none)]> show master status;

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| master-bin.000001 |      507 |              |                  |

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

1 row in set (0.00 sec)

MariaDB [mydb]> change master to master_host=‘192.168.1.146‘,master_user=‘repluser‘,master_password=‘replpass‘,master_log_file=‘master-bin.000003‘,master_log_pos=507;

启动进程:start slave;

配置完成创建数据查看状态:

MariaDB [mydb]> create table tb1 (id int unsigned not null auto_increment primary key,name char(30));

MariaDB [mydb]> insert into tb1 (name) values (‘tom‘),(‘jerry‘);

复制如何开始?

主节点运行很长时间,且已经有一定规模的数据,如何启动复制?

在主节点做一个完全备份,并记录二进制日志文件及位置;

在从节点恢复此完全备份,并在启动复制时从记录的二进制日志文件和位置开始;

复制时应该注意的问题:

1、如何限制从服务器只读?

在从服务器启动read_only;但仅对非具有SUPER权限的用户有效;

阻止所有用户 :MariaDB> FLUSH TABLES WITH READ LOCK;

2、如何保证主从复制时的事务安全?

在master节点启用参数:

sync_binlog = on            #让从服务器也对尽早的读到二进制日志文件

如果用到的为InnoDB存储引擎:

innodb_flush_logs_at_trx_commit    #表示innodb事务提交时立即刷写到数据磁盘中

innodb_support_xa=on               #表示让innodb支持分布式事务

在slave节点:

skip_slave_start   #表示跳过slave启动

主节点(不考虑io情况下)可以启动以下选项:

sync_master_info = 1

从节点:

sync_relay_log = 1

sync_relay_log_info = 1

时间: 2024-08-06 16:01:09

Mysql 主从 主主简单配置的相关文章

学一点 MYSQL 双机异地热备份—-MYSQL主从,主主备份原理及实践

简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量.  对于异地热备,尤其适合灾备.废话不多说了.我们直接进入主题. 我们会主要介绍两部分内容: 一, mysql 备份工作原理 二, 备份实战 我们开始. 我使用的是my

mysql主从:主键冲突问题

1.检查从库 show slave status \G; Slave_IO_Running: YesSlave_SQL_Running: No 2.出现类似如下的报错: Last_SQL_Error: Error 'Duplicate entry '1001-164761-0' for key 'PRIMARY'' on query. Default database: 'bug'. Query: 'insert into misdata (uid,mid,pid,state,mtime) va

基于MYCAT的MYSQL主从与读写分离配置详解与示例

1.不使用Mycat托管MySQL主从服务器,简单使用如下配置:          <dataNodename="dn1" dataHost="localhost1" database="db1"/>          <dataNodename="dn2" dataHost="localhost1" database="db2"/>          <d

MySQL主从同步的简单理解

MySQL主从同步的简单理解 许多大型网站为了减轻海量用户对于服务器并发访问量的性能问题,会使用很多解决的方案, 数据库主从分离,就是目前主流的一种解决手段. 想一下每个用户都通过控制层业务层调用服务器数据,用户量小还好说, 用户量大的话轻则用户体验极差,重则数据库崩溃甚至数据丢失,那真的就是很严重的事情了. 如何解决,解决方案之一就是主从分离. 主从那长话短说就是,一台服务器我处理不了就用几台服务器咯, 但是这些服务器是有主次之分以及职责划分的. * 将我们对数据库的读写操作分别放到不同的服务

mysql 主从,双主简单配置

##创建两台版本相同的mysql 1.主节点修改配置文件 /etc/mysql/my.cf log-bin=master-bin                  #启用二进制日志 默认可以不改 # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set #

mysql主从、主主配置

MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量.  对于异地热备,尤其适合灾备.废话不多说了.我们直接进入主题. 我们会主要介绍两部分内容: 一, MySQL 备份工作原理 二, 备份实战 我们开始. 我使用的是mysql 5.5.34, 一, mysql 备份工作原

mysql主从和主主备份

1.创建一个数据库用于测试同步: mysql> create database dragon; Query OK, 1 row affected (0.04 sec) mysql> use dragon Database changed mysql> create table user(id int(5),name char(20)); Query OK, 0 rows affected (0.17 sec) mysql> quit 2.修改主库my.cnf主要设置个不一样的ID,

mysql主从同步/主主同步

Centos环境198.168.1.20198.168.1.21 master操作: 修改mysql配置文件(my.cnf) [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=xxx //要同步的库 binlog-ignore-db=mysql //不同步的 sync_binlog = 1 //类似实时存入binlog,=0则会先写进缓存 binlog_checksum = none //此命令可以同步不同版本的mysql数据库,mysql5

mysql主从之主键冲突

收到短信报警,两台数据库都报slave同步失败了,先说明一下环境,架构:lvs+keepalived+amoeba+mysql,主主复制,单台写入, 主1:192.168.0.223(写) 主2:192.168.0.230 好吧,先show slave status \G看一下同步失败的具体报错吧 登录主2库查看: mysql> show slave status \G *************************** 1. row ***************************