mariadb数据库主从复制配置方法
Mysql(Mariadb)数据库主从复制
Mysql(Mariadb)数据库主从复制Mysql主从复制的实现原理图大致如下:MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦启用二进制日志后,其作为master,它数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主章节,里面内容写的非常详细,适合初学者,本文也比较适合企业应用。
实现MySQL主从复制配置要求:主服务器:1、开启数据库二进制日志功能;2、配置数据库认证唯一服务id;3、获得主库的二进制日志文件名及位置;4、在主库上面创建一个用于主库和从库通信的用户账号,安全管理。
从服务器:1、在从库中配置唯一服务id;2、使用主库创建分配的用户账号读取主库的二进制日志;3、启用slave功能,用于主从通信。
一、准备工作:1.主从数据库版本最好一致;2.主从数据库内数据保持一致;主数据库(master):192.168.3.91 /CentOS Linux release 7.5.1804 (Core)从数据库( slave ):192.168.3.218 /CentOS Linux release 7.5.1804 (Core)注意:这里的主从都是通过yum源安装的mariadb 5.5.56;# yum install mariadb-server.x86_64 mariadb.x86_64 -y//设置mariadb服务# systemctl start mariadb.service && systemctl enable mariadb.service//设置mariadb数据库root账号的密码,默认root用户是没有密码;# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the currentpassword for the root user. If you've just installed MariaDB, andyou haven't set the root password yet, the password will be blank,so you should just press enter here.Enter current password for root (enter for none):OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.Set root password? [Y/n] yNew password:Re-enter new password:Password updated successfully!Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into a production environment.Remove anonymous users? [Y/n] y... Success!Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] n... skipping.By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removedbefore moving into a production environment.Remove test database and access to it? [Y/n] n... skipping.Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.Reload privilege tables now? [Y/n] y... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDB installation should now be secure.Thanks for using MariaDB!二、主数据库master修改:1.修改mysql配置找到主数据库的配置文件f(或者my.ini),我的在/etc/f,在[mysqld]部分插入如下两行:# find / -name f默认配置[mysqld]log-bin=mysql-bin #开启二进制日志 server-id=1 #设置server-idlog-bin="/var/lib/mysql/" #设定生成的log文件名;修改后:# systemctl restart mariadb.service2.重启mysql,创建用于同步的用户账号# mysql -hlocalhost -uroot -ppassword创建用户并授权:用户:wxp,密码:passwordMariaDB [(none)]>CREATE USER'wxp'@'192.168.3.218' IDENTIFIED BY'password';#创建用户MariaDB [(none)]>GRANT REPLICATION SLAVE ON*.*TO'wxp'@'192.168.3.218';#分配权限MariaDB [(none)]>flush privileges; #刷新权限3.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(492):MariaDB [(none)]> SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 492 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)二、从服务器slave修改:1.修改mysql配置同样找到f配置文件,添加server-id# find / -name ff默认配置[mysqld]server-id=2#设置server-id,必须唯一log-bin="/var/lib/mysql/" #设定生成的log文件名;修改后:# systemctl restart mariadb.service2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):# mysql -hlocalhost -uroot -ppasswordMariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.3.91', -> MASTER_USER='wxp', -> MASTER_PASSWORD='password', ->MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=492;这里是直接把信息写入到数据库里面,mysql> select * from mysql.slave_master_info \G3.启动slave同步进程:MariaDB [(none)]>start slave;4.查看slave状态:MariaDB [(none)]> show slave status\G;MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.3.91Master_User: wxpMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 492Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 529Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 492Relay_Log_Space: 825Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 11 row in set (0.00 sec)ERROR: No query specified当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。
数据库主从复制的部署与同步方案
数据库主从复制的部署与同步方案数据库主从复制是一种常用的数据库高可用性和数据备份方案。
它通过将一个数据库(主数据库)的数据复制到另一个数据库(从数据库)上,从而实现数据的同步备份。
在主从数据库之间,主数据库负责处理客户端的读写请求,而从数据库只负责接收主数据库的数据变更,并将其同步到本地。
一、部署数据库主从复制要部署数据库主从复制,需要完成以下步骤:1. 确定主从数据库的角色:主数据库负责接收客户端的读写请求,从数据库负责接收主数据库的数据变更。
根据实际需求和资源情况,选择适当的主从角色设置。
2. 配置主数据库:在主数据库中,需要启用二进制日志(binary log)功能,并设置一个唯一的服务器ID。
二进制日志记录了主数据库上的所有数据变更操作。
3. 配置从数据库:在从数据库中,需要设置一个唯一的服务器ID,并指定主数据库的地址和端口。
从数据库会连接到主数据库,并通过复制主数据库的二进制日志来实现数据同步。
4. 启动主数据库和从数据库:先启动主数据库,然后再启动从数据库。
从数据库会连接到主数据库,并开始同步主数据库的数据。
5. 验证主从复制:可以使用一些检查命令来验证主从数据库是否正常复制。
例如,可以使用SHOW SLAVE STATUS命令来查看从数据库的复制状态。
二、同步方案为了确保数据库主从复制的同步性和可靠性,需要采取一些同步方案和措施。
1. 自动故障转移:主数据库可能会发生故障,导致无法提供服务。
为了解决这个问题,可以引入自动故障转移。
当主数据库发生故障时,系统会自动将从数据库切换为主数据库,从而实现持续的数据服务。
2. 监控和告警:监控主数据库和从数据库的运行状态非常重要。
可以采用监控工具来实时监控数据库的各项指标,如数据库连接数、复制延迟等。
并设置合适的告警规则,及时发现和解决问题。
3. 定期备份:数据库主从复制并不能替代数据库备份。
为了防止数据丢失,建议定期对数据库进行备份。
可以使用物理备份或逻辑备份方法,将备份数据存储在安全的位置。
主从复制的基本步骤
主从复制的基本步骤主从复制是数据同步的一种模式,它通常用于将一个数据库中的数据复制到另一个数据库中,以便在不同的主机上运行相同的应用程序。
在主从复制中,一个数据库称为"主",而其他数据库称为“从”。
主数据库负责更新数据,而从数据库则负责接收和应用这些更新。
主从复制需要经历几个关键的步骤才能正确地实现。
本文将介绍这些步骤。
1. 配置主从服务器首先,需要为主数据库和从数据库分别配置数据库服务器。
此时,主服务器应该被配置为可以接受从服务器的连接,以便从服务器可以将更新应用到自己的数据库中。
2. 更改配置文件在完成服务器的配置后,需要更改配置文件,以便在项目中使用主从复制。
在主服务器的f文件中,需要设置log-bin选项来指示MySQL将更新写入二进制日志中。
在从服务器的f文件中,需要使用server-id选项来标识该服务器。
3. 创建复制用户为了实现主从复制,从数据库需要使用特定的用户登录到主数据库。
因此,需要在主服务器上创建一个新的复制用户,并将其授权给从服务器。
CREATE USER 'replication'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO'replication'@'%';注意,这里的密码应该是一个强密码,以确保安全性。
4. 备份并恢复数据在配置好主从服务器并创建了相应的用户后,需要在主数据库上备份数据,并在从数据库上恢复这些数据。
为了达到这个目的,应该使用mysqldump工具。
例如,在Linux环境下,可以使用以下命令来备份数据:mysqldump --databases mydatabase > mydatabase.sql然后,将备份文件传输到从服务器上并恢复数据。
可以使用以下命令将备份文件还原到从服务器上:mysql < mydatabase.sql5. 启动复制进程在前面的步骤中,已经配置了主从服务器并备份和恢复了数据。
mariadb集群配置(主从和多主)
mariadb集群配置(主从和多主)mariadb主从主从多⽤于⽹站架构,因为主从的同步机制是异步的,数据的同步有⼀定延迟,也就是说有可能会造成数据的丢失,但是性能⽐较好,因此⽹站⼤多数⽤的是主从架构的数据库,读写分离必须基于主从架构来搭建。
mariadb主从架构流程主增删改,从同步数据修改写进磁盘,以⼆进制⽂件格式保存,并创建授权登陆账号,从节点登陆同步账号读取此⼆进制⽂件。
主节点⽣成⼀个dump线程接收从节点请求,从节点⽣成io与sql线程,但主节点并不只能有⼀个线程。
io线程发送请求读⼆进制⽂件,dump线程返回给reley log(中继⽇志⾥),然后sql线程再读取中继⽇志进⾏回放,同步数据。
black hole引擎(只存储⼆进制⽂件):⽤于主从节点之间的连接,降低主节点的压⼒同步延迟,⼆进制⽂件记录是串⾏。
坏处是延迟,好处是能够⼀定时间内撤销错误操作异步同步优缺点:异步能解放出来节省时间和资源,不安全同步能提⾼安全,但效率低mariadb主从解决单点故障⽅案MHA:通过mha(配置⽂件)监控主从架构,master high avaliable 主机⾼可⽤(布置在另⼀台主机上)互为主从:有可能会造成数据的不⼀致mariadb架构的基础之上的读写分离的实现:proxy mycat环境准备准备两天同⽹段的主机,这⾥设置192.168.253.147为主,192.168.253.148为从主配置:1)关闭两台主机的防⽕墙2)修改配置⽂件/etc/f.d/f ;在mysql模块下添加:server_id=1 和 log_bin=mysql_bin ,重启mariadb3)进⼊mysql创建主从连接账号create user slave@'%' identified by '1';4)授权grant replication slave on *.* to slave@'%' identified by '1';5)查看master状态show mater status;| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql_bin.000002 | 342 | |注意:此状态会随着重启等操作改变,⼀旦改变从节点需要重新登陆。
数据库主从复制的配置与管理
数据库主从复制的配置与管理数据库主从复制是一种常用的数据备份和高可用性解决方案,在数据库系统中起着至关重要的作用。
本文将介绍数据库主从复制的配置和管理方法,帮助管理员理解并正确实施这项技术。
1. 简介数据库主从复制是指将一个数据库(主数据库)的数据实时复制到其他备用数据库(从数据库)的过程。
主数据库负责处理写操作,并将写操作同步到从数据库上。
若主数据库出现故障,系统可以自动切换到从数据库上,从而实现高可用性和容错性。
2. 主从复制的优势主从复制具有以下优势:- 数据备份:通过将数据实时复制到从数据库,可以保证数据的安全性和完整性。
- 高可用性:主数据库故障时,从数据库可以自动接管,保证系统的可用性。
- 负载均衡:通过将读操作分担到从数据库上,可以减轻主数据库的负载。
- 数据迁移:可以将从数据库用作新服务器的初始化数据源,方便数据库的迁移和扩容。
3. 配置主从服务器配置数据库主从复制需要进行以下步骤:- 确保主服务器和从服务器的系统时间同步,避免时间差导致复制失败。
- 在主服务器上进行配置,开启二进制日志(binlog)功能和设置唯一标识(server_id)。
- 在从服务器上进行配置,设置唯一标识(server_id)和主服务器的连接信息。
- 主服务器上的数据更改会被记录到二进制日志中,并通过网络传输到从服务器上,从服务器接收并应用这些更改。
4. 管理主从复制管理数据库主从复制包括以下方面:- 监测复制状态:定期检查主从服务器的复制状态,确保复制进程正常运行。
可以使用SHOW SLAVE STATUS命令来查看从服务器的状态。
- 处理复制延迟:复制延迟是指从服务器的数据落后于主服务器的现象。
若复制延迟存在,可以通过优化网络连接,增加从服务器的性能,或调整主服务器的负载来减少延迟。
- 处理主从切换:当主服务器出现故障时,需要手动或自动切换到从服务器。
这需要进行故障判断和切换脚本的设置来实现自动化切换。
MySQL怎么设置主从复制_MySQL主从复制有哪些方法
MySQL怎么设置主从复制_MySQL主从复制有哪些方法MySQL是一个关系型数据库管理系统,在WEB 应用方面,MySQL是最好的RDBMS 应用软件。
下面由店铺为大家整理的MySQL主从复制的方法,希望大家喜欢!MySQL主从复制的方法设置主从复制:1、确保在主服务器和从服务器上安装的MySQL版本相同,并且最好是MySQL的最新稳定版本。
2、在主服务器上为复制设置一个连接账户。
该账户必须授予REPLICATION SLAVE权限。
如果账户仅用于复制(推荐这样做),则不需要再授予任何其它权限。
mysql> GRANT REPLICATION SLAVE ON *.*-> TO 'replication'@'%' IDENTIFIED BY 'slavepass';3、执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:mysql> FLUSH TABLES WITH READ LOCK;保持mysql客户端程序不要退出。
开启另一个终端对主服务器数据目录做快照。
shell> cd /usr/local/mysql/shell> tar -cvf /tmp/mysql-snapshot.tar ./data如果从服务器的用户账户与主服务器的不同,你可能不想复制mysql数据库。
在这种情况下,应从归档中排除该数据库。
你也不需要在归档中包括任何日志文件或者或文件。
当FLUSH TABLES WITH READ LOCK所置读锁定有效时(即mysql客户端程序不退出),读取主服务器上当前的二进制日志名和偏移量值:mysql > SHOW MASTER STATUS;+---------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql |+---------------+----------+--------------+------------------+ File列显示日志名,而Position显示偏移量。
关于MariaDB主从数据库复制的配置
一、主从复制概述1.复制概述mysql内建的复制功能是构建大型,高性能应用程序的基础。
将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。
复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。
主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。
这些日志可以记录发送到从服务器的更新。
当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。
从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。
否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。
1.1 mysql支持的复制类型:(1):基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。
MySQL默认采用基于语句的复制,效率比较高。
一旦发现没法精确复制时,会自动选着基于行的复制。
(2):基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持(3):混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
1.2 . 复制解决的问题MySQL复制技术有以下一些特点:(1) 数据分布(Data distribution )(2) 负载平衡(load balancing)(3) 备份(Backups)(4) 高可用性和容错行High availability and failover1.3 复制如何工作整体上来说,复制有3个步骤:(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);(2) slave将master的binary log events拷贝到它的中继日志(relay log);(3) slave重做中继日志中的事件,将改变反映它自己的数据。
数据库主从复制与多主复制的搭建与优化
数据库主从复制与多主复制的搭建与优化第一部分:数据库主从复制的搭建数据库主从复制是一种常见的高可用性和可扩展性方案,通过将数据从主数据库复制到从数据库来实现数据备份和容灾恢复。
1. 搭建主数据库首先,我们需要搭建主数据库。
选择一台性能较好的服务器作为主数据库,并安装数据库软件,如MySQL。
在主数据库上创建一个数据库,并将需要同步的数据表添加到该数据库中。
2. 配置主数据库配置主数据库以允许从数据库连接并复制数据。
在主数据库的配置文件中,设置以下选项:- 启用二进制日志(binary log):这是主数据库记录所有修改操作的方式,从数据库将使用这些日志来进行数据复制。
- 设置唯一标识符(server_id):每个数据库实例都需要一个唯一的标识符,以便从数据库可以识别主数据库。
- 配置权限:为从数据库设置合适的权限,以便从数据库可以连接到主数据库并读取二进制日志。
重新启动主数据库以使配置生效。
3. 搭建从数据库选择一台性能适当的机器作为从数据库,并在该机器上安装相同版本的数据库软件。
在从数据库上创建一个与主数据库相同的数据库,并确保该数据库为空。
4. 配置从数据库在从数据库的配置文件中,设置以下选项:- 设置唯一标识符(server_id):每个从数据库都需要一个唯一的标识符,以便主数据库可以识别从数据库。
- 配置主数据库地址和凭据:从数据库需要知道主数据库的位置以及连接到主数据库所需的凭据。
重新启动从数据库以使配置生效。
5. 启动数据库复制在从数据库上运行复制命令,以启动数据库复制。
该命令将告诉从数据库连接到主数据库,并开始复制数据。
一旦连接建立,从数据库将开始从主数据库读取二进制日志,并将数据复制到本地数据库中。
第二部分:数据库主从复制的优化数据库主从复制可以提供高可用性和容灾能力,但在实践中可能遇到性能瓶颈。
以下是一些优化数据库主从复制的方法。
1. 监控复制延迟定期监控主从数据库之间的复制延迟。
MySQL主从复制的原理及配置方法(比较详细)
MySQL主从复制的原理及配置⽅法(⽐较详细)MySQL 复制基于主服务器在⼆进制⽇志中跟踪所有对数据库的更改(更新、删除等等)。
每个从服务器从主服务器接收主服务器已经记录到其⼆进制⽇志的保存的更新,以便从服务器可以对其数据拷贝执⾏相同的更新。
将主服务器的数据拷贝到从服务器的⼀个途径是使⽤LOAD DATA FROM MASTER语句。
请注意LOAD DATA FROM MASTER⽬前只在所有表使⽤MyISAM存储引擎的主服务器上⼯作。
并且,该语句将获得全局读锁定。
MySQL 使⽤3个线程来执⾏复制功能,其中1个在主服务器上,另两个在从服务器上。
当发出START SLAVE时,从服务器创建⼀个I/O线程,以连接主服务器并让它发送记录在其⼆进制⽇志中的语句。
主服务器创建⼀个线程将⼆进制⽇志中的内容发送到从服务器。
该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。
从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据⽬录中的本地⽂件中,即中继⽇志。
第3个线程是SQL线程,是从服务器创建⽤于读取中继⽇志并执⾏⽇志中包含的更新。
有多个从服务器的主服务器创建为每个当前连接的从服务器创建⼀个线程;每个从服务器有⾃⼰的I/O和SQL线程。
复制代码代码如下:Sending binlog event to slave⼆进制⽇志由各种事件组成,⼀个事件通常为⼀个更新加⼀些其它信息。
线程已经从⼆进制⽇志读取了⼀个事件并且正将它发送到从服务器。
Finished reading one binlog; switching to next binlog线程已经读完⼆进制⽇志⽂件并且正打开下⼀个要发送到从服务器的⽇志⽂件。
Has sent all binlog to slave; waiting for binlog to be updated线程已经从⼆进制⽇志读取所有主要的更新并已经发送到了从服务器。
详细描述mariadb数据库的读写分离原理。
MariaDB是一个流行的开源数据库管理系统,其主要特点是速度快、安全性高、易于使用。
读写分离是MariaDB的重要特性之一,本文将详细描述其原理。
段落一:MariaDB的读写分离原理读写分离是指将数据库的读操作和写操作分开处理,写操作只需在主服务器上进行,而读操作则可以在主服务器和从服务器上同时执行。
这样可以减轻主服务器的负担,提高系统性能和可靠性。
段落二:主从复制的实现MariaDB使用主从复制来实现读写分离。
主服务器是唯一可写的节点,从服务器则是只读节点。
主服务器将所有的写操作写入二进制日志文件,从服务器根据日志文件的内容对自己的数据进行更新,以保持和主服务器数据的一致性。
段落三:从服务器的类型MariaDB的从服务器可以是普通的从服务器,也可以是只读从服务器。
普通从服务器可以被用于执行读操作和部分写操作,而只读从服务器只能执行读操作,但是它的性能会更好。
这是因为只读从服务器不需要记录二进制日志文件,而从服务器需要记录二进制文件来帮助复制数据。
段落四:如何实现负载均衡使用读写分离可以将负载分散到多台服务器上,提高系统的可伸缩性和容错性。
通过将读请求分发到多个从服务器上,可以减轻主服务器的负担,从而提高系统的性能和可靠性。
常用的负载均衡器有HAProxy和Nginx等。
段落五:如何配置MariaDB的读写分离配置MariaDB的读写分离通常需要进行以下步骤。
首先,需要设置主服务器的二进制日志记录。
然后,需要在从服务器上启用二进制日志记录,并设置从服务器将接收来自主服务器的日志文件。
最后,需要通过修改应用程序的数据库连接字符串,来实现对主服务器的写操作和对从服务器的读操作的区分。
结论:读写分离是MariaDB的重要特性之一,通过它可以将负载分散到多个服务器上,提高系统的可伸缩性和容错性。
配置MariaDB的读写分离需要进行一些步骤,但它可以提高数据库的性能和可靠性,是值得使用的技术。
mariadb的主从复制、主主复制、半同步复制配置详解
mariadb的主从复制、主主复制、半同步复制配置详解主从服务器的时间要同步,数据库版本最好是⼀致的,以免造成函数处理、⽇志读取、⽇志解析等发⽣异常。
以下三个主从复制的设置是独⽴的。
注意防⽕墙和selinux的影响。
1、简单主从复制的实现(1)主服务器的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/f在[mysqld]段的最后添加以下内容skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 (id号不能跟从服务器相同) log-bin = master-log (⾃定义⼆进制⽇志⽂件名)3)授权可以复制本地数据库信息的主机[root@localhost ~]# systemctl start mariadb.service (启动mariadb server)[root@localhost ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> flush privileges;MariaDB [(none)]> show master status\G (查看主服务器的状态信息,在从服务器中要⽤到)*************************** 1. row ***************************File: master-log.000003 (正在使⽤的⼆进制⽇志⽂件)Position: 497 (所处的位置)Binlog_Do_DB:Binlog_Ignore_DB:(2)从服务器的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/f在[mysqld]段的最后添加以下内容skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 (id号不能跟主服务器相同) relay-log = slave-log (⾃定义⼆进制⽇志⽂件名)3)设置要从哪个主服务器的那个位置开始同步[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# mysqlMariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=497; MariaDB [(none)]> start slave; (启动复制功能)MariaDB [(none)]> show slave status\G (查看从服务器的状态,下⾯显⽰的是部分内容)Master_Host: 10.1.51.60Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 497Relay_Log_File: slave-log.000002Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 1(3)测试1)在主服务器导⼊事先准备好的数据库[root@localhost ~]# mysql < hellodb.sql2)在从服务器查看是否同步MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || hellodb |(数据库已经同步)| mysql || performance_schema || test |+--------------------+MariaDB [(none)]> use hellodb;MariaDB [hellodb]> show tables; (hellodb数据库的表也是同步的)+-------------------+| Tables_in_hellodb |+-------------------+| classes || coc || courses || scores || students || teachers || toc |+-------------------+2、双主复制的实现(1)服务器1的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/f在[mysqld]段的最后添加以下内容skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 (id号不能跟从服务器相同) log-bin = master-log (⾃定义主服务器的⼆进制⽇志⽂件名) relay-log = slave-log (⾃定义从服务器的⼆进制⽇志⽂件名) auto_increment_offset = 1auto_increment_increment = 23)在服务器2上查看的master状态MariaDB [(none)]> show master status\G*************************** 1. row ***************************File: master-log.000003Position: 422Binlog_Do_DB:Binlog_Ignore_DB:4)启动mariadb server并进⾏如下配置[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> change master to master_host='10.1.51.50',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=422; MariaDB [(none)]> start slave;MariaDB [(none)]> SHOW SLAVE STATUS\G (仅是部分内容)Master_Host: 10.1.51.50Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 422Relay_Log_File: slave-log.000002Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 2(2)服务器2的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/f skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 relay-log = slave-log lob-bin = master-log auto_increment_offset = 2 auto_increment_increment = 23)在服务器1查看master状态MariaDB [(none)]> show master status\G *************************** 1. row *************************** File: master-log.000003 Position: 245 Binlog_Do_DB: Binlog_Ignore_DB:4)启动mariadb server并配置[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=245; MariaDB [(none)]> start slave;MariaDB [(none)]> show slave status\G (仅是部分内容)Master_Host: 10.1.51.60Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-log.000003Read_Master_Log_Pos: 422Relay_Log_File: slave-log.000003Relay_Log_Pos: 530Relay_Master_Log_File: master-log.000003Slave_IO_Running: YesSlave_SQL_Running: YesMaster_Server_Id: 1(3)测试1)在任意⼀台服务器上创建mydb数据库MariaDB [(none)]> create database mydb;2)在另⼀台服务器上查看MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mydb || mysql || performance_schema || test |+--------------------+3、半同步复制的实现(1)在主服务器上的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f[root@localhost ~]# vim /etc/f skip_name_resolve = ON innodb_file_per_table = ON server-id = 1 log-bin = master-log3)授权可以复制本地数据库信息的主机[root@localhost ~]# systemctl start mariadb.service (启动mariadb server)[root@localhost ~]# mysqlMariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'10.1.51.%' identified by 'replpasswd';MariaDB [(none)]> flush privileges;MariaDB [(none)]> show master status\G (查看主服务器的状态信息,在从服务器中要⽤到)*************************** 1. row ***************************File: master-log.000003 (正在使⽤的⼆进制⽇志⽂件)Position: 245 (所处的位置)Binlog_Do_DB:Binlog_Ignore_DB:4)安装rpl semi sync_master插件,并启⽤[root@localhost ~]# mysqlMariaDB [(none)]> install plugin rpl_semi_sync_master soname 'semisync_master.so';MariaDB [(none)]> set global rpl_semi_sync_master_enabled = ON;补充:MariaDB [(none)]> show plugins;(可查看插件是否激活) MariaDB [(none)]> show global variables like 'rpl_semi%';(可查看安装的插件是否启⽤) MariaDB [(none)]> show global status like '%semi%';(可查看从服务器的个数,此时是0个)(2)从服务器的配置1)安装mariadb-server[root@localhost ~]# yum -y install mariadb-server2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/f在[mysqld]段的最后添加以下内容skip_name_resolve = ON innodb_file_per_table = ON server-id = 2 (id号不能跟主服务器相同) relay-log = slave-log (⾃定义⼆进制⽇志⽂件名)3)设置要从哪个主服务器的那个位置开始同步[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# mysqlMariaDB [(none)]> change master to master_host='10.1.51.60',master_user='repluser',master_password='replpasswd',master_log_file='master-log.000003',master_log_pos=245; 4)安装rpl semi sync_slave插件并启⽤[root@localhost ~]# mysqlMariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON;MariaDB [(none)]> start slave;完成上⾯配置后,可以在主服务器上查看半同步复制的相关信息,命令如下:MariaDB [(none)]> show global status like '%semi%';Rpl_semi_sync_master_clients 1 (从服务器有⼀台)(3)测试测试以个⼈实际情况⽽定1)在主服务器上导⼊事先准备好的数据库hellodb.sqlMariaDB [hellodb]> source /root/hellodb.sql;2)在主服务器上查看半同步复制的状态MariaDB [hellodb]> show master status;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-log.000003 | 8102 | | |+-------------------+----------+--------------+------------------+MariaDB [hellodb]> show global status like '%semi%';+--------------------------------------------+-------+| Variable_name | Value |+--------------------------------------------+-------+| Rpl_semi_sync_master_clients | 1 || Rpl_semi_sync_master_net_avg_wait_time | 1684 || Rpl_semi_sync_master_net_wait_time | 60630 || Rpl_semi_sync_master_net_waits | 36 || Rpl_semi_sync_master_no_times | 1 || Rpl_semi_sync_master_no_tx | 1 || Rpl_semi_sync_master_status | ON || Rpl_semi_sync_master_timefunc_failures | 0 || Rpl_semi_sync_master_tx_avg_wait_time | 1884 || Rpl_semi_sync_master_tx_wait_time | 65965 || Rpl_semi_sync_master_tx_waits | 35 || Rpl_semi_sync_master_wait_pos_backtraverse | 0 || Rpl_semi_sync_master_wait_sessions | 0 || Rpl_semi_sync_master_yes_tx | 35 |+--------------------------------------------+-------+3)在从服务器上查看是否同步MariaDB [(none)]> show databases;MariaDB [(none)]> use hellodb;MariaDB [hellodb]> select * from students;补充:基于上⾯的半同步复制配置复制的过滤器,复制过滤最好在从服务器上设置,步骤如下(1)从服务器的配置1)关闭mariadb server[root@localhost ~]# systemctl stop mariadb.service2)编辑/etc/f⽂件[root@localhost ~]# vim /etc/fskip_name_resolve = ONinnodb_file_per_table = ONserver-id = 2relay-log = slave-logreplicate-do-db = mydb (只复制mydb数据库的内容)补充:常⽤的过滤选项如下Replicate_Do_DB= Replicate_Ignore_DB= Replicate_Do_Table= Replicate_Ignore_Table= Replicate_Wild_Do_Table= Replicate_Wild_Ignore_Table=3)重启mariadb server[root@localhost ~]# systemctl start mariadb.service4)重启mariadb server后,半同步复制功能将被关闭,因此要重新启动MariaDB [(none)]> show global variables like '%semi%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| rpl_semi_sync_slave_enabled | OFF || rpl_semi_sync_slave_trace_level | 32 |+---------------------------------+-------+MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = ON;MariaDB [(none)]> stop slave;(需先关闭从服务器复制功能再重启)MariaDB [(none)]> start slave;(2)测试1)主服务器上的hellodb数据库创建⼀个新表semitableMariaDB [hellodb]> create table semitable (id int);2)在从服务器上查看hellodb数据库是否有semitableMariaDB [(none)]> use hellodbMariaDB [hellodb]> show tables;(并没有)+-------------------+| Tables_in_hellodb |+-------------------+| classes || coc || courses || scores || students || teachers || toc |+-------------------+3)在主服务器上创建mydb数据库,并为其创建⼀个tbl1表MariaDB [hellodb]> create database mydb;4)在从服务器上查看mydb数据库的是否有tbl1表MariaDB [hellodb]> use mydb;MariaDB [mydb]> show tables; (可以查看到)+----------------+| Tables_in_mydb |+----------------+| tbl1 |+----------------+。
数据库软件的主从复制和数据同步配置指南
数据库软件的主从复制和数据同步配置指南第一章:概述数据库软件的主从复制是指将一台数据库服务器(主服务器)的数据同步到其他多个从服务器的过程。
主从复制提供了数据冗余和可用性,以及分担主服务器的负载的好处。
本章将介绍主从复制的基本概念和其在数据同步中的应用。
第二章:主从复制的基本原理在主从复制过程中,主服务器将写操作记录到二进制日志(binary log),然后从服务器通过读取二进制日志来复制主服务器上的数据更改。
从服务器与主服务器之间通过网络连接进行通信。
本章将详细介绍主从复制的基本原理,并解释主服务器和从服务器之间的通信过程。
第三章:主从复制的配置步骤本章将介绍主从复制的配置步骤。
首先,需要确保主服务器的二进制日志已启用,并配置从服务器以连接到主服务器。
接下来,需要设置主服务器和从服务器之间的网络连接参数。
最后,需要配置从服务器以读取主服务器的二进制日志并应用更改。
本章将详细解释每个配置步骤,并提供示例配置文件。
第四章:主从复制中的故障处理故障处理是主从复制配置中一个重要的方面。
在实际使用中,可能会出现网络故障、硬件故障或其他问题。
本章将介绍主从复制中的常见故障和解决方法,例如从服务器延迟、网络中断和数据一致性问题。
此外,还将讨论如何设置监控和告警机制以及备份和恢复策略。
第五章:数据同步配置指南数据同步是指在多个数据库之间保持数据一致性的过程。
除了主从复制之外,还可以使用其他数据同步技术,例如多主复制和主主复制。
本章将介绍如何配置多主复制和主主复制。
还将讨论数据同步冲突的处理和解决方法。
第六章:主从复制的性能优化在大规模数据库环境中,主从复制的性能可能成为一个瓶颈。
本章将介绍一些性能优化技术,包括使用并行复制和延迟复制来提高主从复制的效率。
还将讨论如何调整数据库参数和硬件配置以优化主从复制性能。
第七章:数据库软件的其他复制技术除了主从复制之外,还有一些其他复制技术可以用于数据同步,例如复制集群和分布式数据库。
数据库的主从复制与高可用性
数据库的主从复制与高可用性在现代信息技术快速发展的时代,数据库成为各个行业和领域中非常重要的数据存储工具。
为了保证数据的安全可靠性以及系统的高可用性,数据库的主从复制技术应运而生。
本文将从主从复制的定义、工作原理、配置方法以及提高数据库高可用性的相关策略等方面进行论述。
一、主从复制的定义主从复制是一种数据库同步机制,通过在数据库系统中设置主数据库和从数据库,实现将主数据库的数据同步到从数据库的过程。
主数据库是负责处理读、写请求的数据库,而从数据库是用于备份和读操作的副本数据库。
主从复制的核心目标是实现数据的可靠备份和高可用性,当主数据库故障时,可以快速切换到从数据库以保证系统的正常运行。
二、主从复制的工作原理主从复制的工作原理基于二进制日志(binlog)和复制线程的机制。
主数据库将所有的写操作记录到二进制日志中,并通过复制线程将二进制日志传输到从数据库。
从数据库接收到主数据库的二进制日志后,通过重新执行二进制日志中的操作来实现数据的同步。
主从复制的工作过程主要包括三个步骤:首先是主数据库将写操作记录到二进制日志中;然后是从数据库将主数据库的二进制日志复制到本地;最后是从数据库根据主数据库的二进制日志重新执行操作,从而实现数据的同步。
三、配置主从复制的方法配置主从复制主要包括设置主数据库和从数据库、配置主数据库的二进制日志以及配置从数据库复制线程等几个步骤。
首先,在主数据库中开启二进制日志,并设置唯一的server-id。
然后,在从数据库中设置与主数据库相同的server-id,并配置复制线程的连接信息,以便从数据库可以连接到主数据库。
在主数据库中创建一个复制账号,并授权给从数据库用于连接主数据库。
最后,在从数据库中配置复制线程,指定主数据库的IP地址、端口号、账号信息等。
通过以上配置步骤,就可以实现主数据库与从数据库的连接和数据同步。
四、提高数据库高可用性的策略除了主从复制技术外,还有一些其他策略可以进一步提高数据库的高可用性。
数据库主从复制的配置与性能优化
数据库主从复制的配置与性能优化数据库主从复制是一种常见的高可用性与负载均衡架构,在分布式系统中起到关键作用。
本文将介绍数据库主从复制的配置步骤和性能优化方法。
1. 配置步骤数据库主从复制需要进行以下配置步骤:1.1 确定主从角色首先,我们需要确定数据库中的主从角色。
主数据库负责写入数据,并将数据变更传播到从数据库。
从数据库则负责读取和备份数据。
1.2 配置主库在主库上,我们需要进行以下配置:1.2.1 启用二进制日志在主机的配置文件中,启用二进制日志记录,以便主库将数据变更记录到日志文件中。
1.2.2 配置唯一标识符为了保持数据一致性,主库需要为每个操作生成唯一标识符。
在配置文件中,设置唯一标识符的生成规则。
1.2.3 配置主从同步主库需要知道从库在哪里。
在配置文件中,指定从库的地址和端口号,并设置主库与从库的连接。
1.3 配置从库在从库上,我们需要进行以下配置:1.3.1 启用中继日志在从库的配置文件中,启用中继日志。
中继日志用于记录从主库获取的数据变更。
1.3.2 配置唯一标识符与主库一样,从库也需要配置唯一标识符的生成规则。
1.3.3 配置主从同步在从库的配置文件中,指定主库的地址和端口号,并设置从库与主库的连接。
2. 性能优化方法数据库主从复制的性能对系统的响应时间和吞吐量有着重要影响。
以下是一些性能优化方法的介绍:2.1 硬件优化增加主库和从库的硬件资源可以提高数据库主从复制的性能。
例如,使用更高性能的处理器、增加内存容量以及使用快速的存储设备等。
2.2 优化网络传输网络传输是主从复制过程中的瓶颈之一。
通过使用高性能的网络设备,增加网络带宽以及使用网络优化工具,可以减少网络传输的延迟和丢包。
2.3 合理配置主从复制合理配置主从复制的参数可以显著提高性能。
例如,调整主库和从库之间的同步延迟,增加同步频率可以减少数据延迟。
另外,可以配置异步复制,将从库的同步操作转移到后台线程中,减少对主库的影响。
Mariadb互为主从+Keepalived
一、Mariadb配置主<—>主同步。
原文链接:https:///qq_32248673/article/details/59055972环境准备:此次试验需准备2台已安装完成的mariadb数据库。
实验结果:2台数据库互为主从,实现数据实时同步。
1、先安装mariadb编译安装1.yum -y install mariadb mariadb-server -----安装配置数据库要求的软件2.systemctl enable mariadb ------设置开机启动3.systemctl restart mariadb ------重启mariadb服务4.mysql_secure_installation ------初始化数据库(密码为:rrhh9708)PS:/etc/f 文件包含MariaDB的默认配置,如数据端口、目录、套接字绑定以及日志和错误文件位置;相关配置可以直接修改/etc/f 或者在/etc/f.d下建立*.cnf的配置文件,一般不用修改。
2、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限:1.使用root用户登录mysql:mysql -uroot -prrhh97082.授权:MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;3.重载授权表:MariaDB [(none)]>FLUSH PRIVILEGES;3、数据库安装完成后,编译配置文件f。
1.主服务器:2.从服务器:3.配置完成后重启服务。
#systemctl restart mariadb.service4.此时两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可mysql -uroot -prrhh97085.两台服务器上分别创建账户和权限,来进行同步设置。
数据库主从复制方案的说明书
数据库主从复制方案的说明书1. 概述本文旨在介绍数据库主从复制方案及其原理、配置和使用方法。
通过主从复制,可以提高数据库的可用性、灾备性以及查询性能。
2. 原理主从复制是一种数据同步技术,它通过将主数据库的日志传播给从数据库,使得从数据库能够复制并更新主数据库中的数据。
主从复制可实现数据的实时同步,从而提高读写性能和可用性。
3. 配置3.1 主库配置在主库上,需要进行以下配置步骤:3.1.1 启用二进制日志(binlog):在数据库配置文件中开启binlog,以记录所有写操作。
3.1.2 配置唯一的服务器ID:为主库分配一个唯一的服务器ID,以便从库能够识别主库。
3.1.3 设置主库的binlog格式:可以选择行级复制或语句级复制,具体根据业务需求来定。
3.1.4 创建主库账号:为从库设置账号,并授权给从库复制使用。
3.2 从库配置在从库上,需要进行以下配置步骤:3.2.1 配置唯一的服务器ID:为从库分配一个唯一的服务器ID,以便主库能够识别从库。
3.2.2 配置主库信息:在从库配置文件中指定主库的IP地址、端口号和账号密码等信息。
3.2.3 启动从库复制进程:启动从库的复制进程,使其能够连接到主库并进行数据同步。
4. 使用方法4.1 数据读取操作通过读取从库的数据,可以分担主库的读取压力,提高整体的查询性能。
4.2 数据写入操作所有的写入操作应当直接发送到主库上,从库只负责读取和复制主库的数据,不应进行写入操作。
4.3 失败处理与监控当主库发生故障或网络中断时,从库可以自动切换为主库,保证整个系统的可用性。
同时,需要进行监控和日志记录,及时发现和解决潜在的问题。
5. 注意事项5.1 主从延迟由于主从复制过程中的网络传输和数据处理等因素,从库的数据可能会有一定的延迟。
需要根据业务需求和实际情况,合理选择主从复制方案。
5.2 主从同步异常在主从复制过程中,可能会出现主从同步异常或数据不一致的情况。
MysqlMariadb主从复制
MysqlMariadb主从复制概念什么是·Mysql/Mariadb主从复制?Mysql/Mariadb主从复制:当Master(主)数据库发生变化的时候,变化实时会同步到slave(从)数据库中;类似于:Samba共享文件(C/S)、NFS网络文件共享(C/S),当服务端(Server)发生变化时,客户端(client)数据内容会根据服务端进行改变;好处•水平扩展数据库的负载能力,后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;•容错、高可用,从数据库可用来做备份、数据统计等工作,这样不影响主数据库的性能;•数据分布;•数据备份;实现原理在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);主从同步事件有3种形式:statement、row、mixed。
statement:会将对数据库操作的sql语句写入到binlog中。
row:会将每一条数据的变化写入到binlog中。
mixed:statement与row的混合。
Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。
整体上来说,复制有3个步骤:•master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);•slave将master的binary log events拷贝到它的中继日志(relay log);•slave重做中继日志中的事件,将改变反映它自己的数据。
下面这章图可以详细解释其原理:说的简单一些就是:当对Master数据库不管做了增、删、改还是创建了数据库、表等操作时,Slave就会快速的接受这些数据以及对象的操作,从而实现主从数据复制,保证数据的一致性。
读写分离操作请查看:https:///kuiyajia/p/11909757.html 实战我记得我学PHP开发的时候,教员经常说的一句话就是:学习半小时,实战一分钟;好了,接下来到我们实战的时刻了,认真听讲哟环境介绍系统环境:系统基本上都差不多,一般多数都是Linux平台和Windows平台比较多,不管什么样的系统环境对这次实战的操作都影响不大,我在这里使用的是Docker虚拟出来的CentOS操作系统,当然您可以选用Ubuntu、RedHat以及Windows系统,这些都不会影响到大的操作;我这里使用的系统版本:[root@master /]# cat /etc/redhat-releaseCentOS Linux release 8.0.1905 (Core)这里会用到两台服务器:其中一台MasterIP172.18.0.2,另外一个slaveIP172.18.0.3数据库版本:(我这里使用的Mariadb,你可以使用mysql数据库)[root@master /]# mysql --versionmysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1配置Master数据库1.更改Master配置文件找到下面文件:mysql数据库:/etc/mysql/mysql,conf.d/fmariadb数据库:/etc/f.d/f注意:我这里是使用yum进行安装的所以默认配置文件是在/etc 下面,建议在修改上面两个文件时要先将配置文件进行备份修改以下配置:bind-address=172.18.0.2\\指定Master地址server-id = 1\\指定唯一的serverid部分版本没有需手动写入log_bin = /var/log/mariadb/mariadb-bin.log\\开启binlog部分版本没有需手动写入注意:log_bin这个字段需根据实际情况来定,需找到数据库的日志文件,默认实在 /var/log2.重新启动数据库[*****************.d]#systemctlrestartmariadb\\centos7、centos8、ubuntu重新启动方式[*****************.d]#servermariadbrestart\\centos6及以下版本使用这个重新启动方式mysql重新启动:[*****************.d]#systemctlrestartmysqld\\centos7、centos8、ubuntu重新启动方式[*****************.d]#servermysqldrestart\\centos6及以下版本使用这个重新启动方式3.初始化数据库[*****************.d]#mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the currentpassword for the root user. If you've just installed MariaDB, andyou haven't set the root password yet, the password will be blank,so you should just press enter here.Enter current password for root (enter for none): //这里敲回车OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDBroot user without the proper authorisation.Set root password? [Y/n] y//这里是设置root密码,可不进行设置New password: //新密码Re-enter new password: //旧密码Password updated successfully!Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.Remove anonymous users? [Y/n] y... Success!Normally, root should only be allowed to connect from 'localhost'. Thisensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y... Success!By default, MariaDB comes with a database named 'test' that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.Remove test database and access to it? [Y/n] y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.Reload privilege tables now? [Y/n] y... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDBinstallation should now be secure.Thanks for using MariaDB![*****************.d]#4.创建主从同步的用户[root@master ~]# mysql -u root -p\\登陆数据库Enter password: \\输入root密码Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 18Server version: 10.3.11-MariaDB-log MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> GRANT REPLICATION SLAVE on *.* to 'slave'@'%' IDENTIFIED BY 'redhat';\\创建用户,并设置相应的权限\\此处%表示允许从任何地方(除本地外)使用此账号进行登陆使用,在正式环境建议具体到某台主机IPQuery OK, 0 rows affected (0.000 sec)\\表示sql语句执行成功5.更新Slave用户权限MariaDB [(none)]> flush privileges;\\每次修改用户权限,都要使用这个sql语句进行更新Query OK, 0 rows affected (0.000 sec)6.导出数据库中所有数据(此步骤取决于slave的权限)[root@master ~]# mysqldump -u root -p --all-databases --master-data > mariadb.bat.sql--all-databases\\此参数表示备份所有数据库--master-data\\此参数表示将二进制的信息写入到输出文件中,在这里是写入到备份的sql文件中Enter password:7.查看MASTERr REPLICATION LOG位置MariaDB [(none)]> show master status;+--------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +--------------------+----------+--------------+------------------+| mariadb-bin.000002 | 1974 | | |+--------------------+----------+--------------+------------------+1 row in set (0.000 sec)配置Slave数据库1.更改Slave配置文件文件位置与Master位置一致mysql数据库:/etc/mysql/mysql,conf.d/fmariadb数据库:/etc/f.d/f注意:我这里是使用yum进行安装的所以默认配置文件是在/etc 下面,建议在修改上面两个文件时要先将配置文件进行备份修改以下配置:bind-address=172.18.0.3\\指定Master地址server-id = 2\\指定唯一的serverid部分版本没有需手动写入log_bin = /var/log/mariadb/mariadb-bin.log\\开启binlog部分版本没有需手动写入注意:log_bin这个字段需根据实际情况来定,需找到数据库的日志文件,默认实在 /var/log2.重新启动数据库[*****************.d]#systemctlrestartmariadb\\centos7、centos8、ubuntu重新启动方式[*****************.d]#servermariadbrestart\\centos6及以下版本使用这个重新启动方式mysql重新启动:[*****************.d]#systemctlrestartmysqld\\centos7、centos8、ubuntu重新启动方式[*****************.d]#servermysqldrestart\\centos6及以下版本使用这个重新启动方式3.初始化数据库[*****************.d]#mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the currentpassword for the root user. If you've just installed MariaDB, andyou haven't set the root password yet, the password will be blank,so you should just press enter here.Enter current password for root (enter for none): //这里敲回车OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDBroot user without the proper authorisation.Set root password? [Y/n] y//这里是设置root密码,可不进行设置New password: //新密码Re-enter new password: //旧密码Password updated successfully!Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.Remove anonymous users? [Y/n] y... Success!Normally, root should only be allowed to connect from 'localhost'. Thisensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y... Success!By default, MariaDB comes with a database named 'test' that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.Remove test database and access to it? [Y/n] y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.Reload privilege tables now? [Y/n] y... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDBinstallation should now be secure.Thanks for using MariaDB![*****************.d]#4.从Master将数据库备份复制到slave服务器[root@slave f.d]# scp **********.0.2:/opt/mariadb.bat.sql/opt/**********.0.2'spassword:mariadb.bat.sql5.将备份数据恢复到slave数据库[root@slave f.d]# mysql -u root -p < /opt/mariadb.bat.sqlEnter password:6.使slave与master建立连接[****************.d]#mysql-uroot-pEnter password:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)[****************.d]#mysql-uroot-pEnter password:Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 22Server version: 10.3.11-MariaDB-log MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> stop slave;Query OK, 0 rows affected, 1 warning (0.000 sec)MariaDB [(none)]> CHANGE MASTER TO-> MASTER_HOST = '172.18.0.2',\\指定Master数据库地址-> MASTER_USER = 'slave',\\指定主从复制用户名-> MASTER_PASSWORD = 'redhat',\\指定主从复制用户密码-> MASTER_LOG_FILE = 'mariadb-bin.000002',\\指定Master 数据库的binlog文件名-> MASTER_LOG_POS=1974;Query OK, 0 rows affected (0.290 sec)MariaDB [(none)]> start slave;\\开启复制功能Query OK, 0 rows affected (0.019 sec)MariaDB [(none)]>注意:lMASTER_LOG_FILE='mariadb-bin.000002与MASTER_LOG_POS=1974的值,是从上面的SHOW MASTER STATUS 得到的。
数据库主从复制的配置与管理方法
数据库主从复制的配置与管理方法数据库主从复制是一种常用的数据冗余备份和读写分离技术。
通过配置主从关系,可以将数据从一个数据库服务器(主)复制到其他数据库服务器(从),提供数据冗余和故障恢复,同时还能提高数据库性能。
数据库主从复制的配置和管理方法包括以下几个步骤:1. 确定主服务器和从服务器:首先需要确定哪个数据库服务器将充当主服务器,以及哪些数据库服务器将充当从服务器。
主服务器是数据的源头,而从服务器是接收复制数据的目标。
2. 配置主服务器:在主服务器上,需要进行以下配置:- 修改数据库配置文件:开启主服务器的复制日志,并设置唯一的服务器标识。
- 创建复制账户:为从服务器配置一个账户,用于复制数据。
3. 配置从服务器:在从服务器上,需要进行以下配置:- 修改数据库配置文件:指定主服务器的IP地址和复制账户信息。
- 启动从服务器:启动从服务器,并开启复制进程。
4. 启动主从复制:完成主从服务器的配置之后,需要启动主从复制进程。
在主服务器上,执行命令来启动复制进程,并在从服务器上确认复制进程是否正常运行。
5. 处理主从复制中的错误和冲突:在主从复制过程中,可能会出现数据冲突或者错误。
可以通过监控日志和错误报告来检测并解决这些问题。
6. 监控和管理主从复制:在配置和启动主从复制之后,需要定期监控和管理主从复制的运行状态。
可以通过监控工具或者脚本来检查复制进程是否正常,以及复制延迟是否过大。
7. 处理故障和恢复:在主从复制中,可能会出现主服务器崩溃或网络中断等故障情况。
在这种情况下,需要及时处理并进行故障恢复。
可以通过使用备份文件或者重新配置主从关系来解决这些问题。
总结:数据库主从复制是一种常用的数据冗余备份和读写分离技术。
通过配置和管理主从关系,可以提供数据冗余和故障恢复,同时还能提高数据库性能。
在配置和管理主从复制过程中,需要注意设置唯一的服务器标识,创建适当的复制账户,监控和管理复制进程的运行状态,以及及时处理故障和恢复工作。
CentOS7 MariaDB主从配置
CentOS7 MariaDB主从配置主库配置(主库:192.168.1.2)1. 设置主数据库的配置文件在/etc/f文件中,加上#设置服务器IDserver-id=2#启动MySQ二进制日志系统log-bin=mysql-bin#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行binlog-do-db=DB1#不同步mysql系统数据库binlog-ignore-db=mysql2、在主数据库建立账户并授权从数据库访问:命令行( mysql -u root -p )中录入GRANT REPLICATION SLAVE ON *.* TO 'slave_root'@'%' IDENTIFIED BY 'slave_pass';3、重新启动MariaDB数据库systemctl restart mariadb4、检查主数据库的master状态:在命令行录入show master status;SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 245 | | |+------------------+----------+--------------+------------------+注意:这里记住File的值:mysql-bin.000001和Position的值:245,后面会用到。
从库配置(从库:192.168.1.3)1、设置从数据库的配置文件在/etc/f文件中,加上#设置服务器IDserver-id=3#启动MySQ二进制日志系统(主库一致)log-bin=mysql-bin#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行(主库一致) binlog-do-db=DB1#不同步mysql系统数据库(主库一致)binlog-ignore-db=mysql2. 配置slave,进入从服务器的mysql(mysql -u root -p)控制台:#停止slave同步进程slave stop;#配置主从关系CHANGE MASTER TO MASTER_HOST='192.168.1.2',MASTER_USER='slave_root', MASTER_PASSWORD='slave_pass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 245;#启动slaveslave start;#查看主从同步是否正常show slave status;结果中Slave_IO_Running和Slave_SQL_Running必须为Yes。
数据库主从复制知识点
数据库主从复制知识点数据库主从复制是一种常用的数据备份和故障恢复技术,它可以提高数据库的可靠性和可用性,并且可以分担主数据库的读写压力。
本文将介绍数据库主从复制的基本概念、原理和配置步骤。
一、基本概念数据库主从复制是指将一个数据库的数据复制到其他多个数据库服务器上的过程。
其中,主数据库(Master)负责处理所有的写操作(INSERT、UPDATE和DELETE),从数据库(Slave)则负责接收主数据库的操作记录,并将其应用到自己的数据库中。
通过这种方式,从数据库可以实时保持和主数据库的数据一致性。
二、原理数据库主从复制的原理是基于二进制日志(Binary Log)和复制线程(Replication Thread)。
主数据库将所有的写操作记录到二进制日志中,并通过复制线程将这些操作记录发送给从数据库。
从数据库接收到操作记录后,会将其应用到自己的数据库中。
这样,从数据库就可以实时更新自己的数据,从而保持和主数据库的一致性。
三、配置步骤 1. 配置主数据库:首先,在主数据库中开启二进制日志功能。
在数据库的配置文件中,将log_bin参数设置为ON,并指定一个合适的日志文件名称。
然后,重启数据库使配置生效。
2.创建复制用户:在主数据库中创建一个用于复制的用户,并授予复制权限。
可以使用如下SQL语句创建用户并授权:CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip';其中,slave_ip是从服务器的IP地址,password是复制用户的密码。
3.备份主数据库:在主数据库上执行备份操作,将数据库的数据和结构导出到一个文件中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主从复制包含两个步骤: 在master 主服务器(组)上的设置,以及在slave 从属服务器(组)上的设置.
一、Master主机配置
[root@master~]yum install mariadb-server -y
[root@master~]systemctl start mariadb
[root@master~]# mysql
MariaDB [(none)]>create database cd;
MariaDB [(none)]>use cd;
MariaDB [(none)]>create table test1 (id int); 字段名数据类型
MariaDB [(none)]>show tables;
停止mysql主服务
[root@master~]systemctl stop mariadb
配置mysql主要同步的数据库名字并开启对应的二进制日志
[root@master~]vim /etc/f
[mysqld]
server-id=1
log-bin=master-bin
binlog-do-db=cd
binlog-ignore-db=mysql
开始配置log-bin导致服务器无法启动,可能是因为二进制目录权限不足,所以还是转到当前目录方便
重新启动
[root@master~]systemctl restart mariadb
授权
MariaDB [(none)]>grant replication slave on *.* to slave@10.1.42.212 identified by "123456";
MariaDB [(none)]>FLUSH PRIVILEGES;
在从slave上测试登录:
[root@slave ~]# mysql -h 10.1.42.211-u slave -p123456
查看状态,这步很关键,两个参数在slave启动时候会用到
把主的原始数据传给从:
[root@master~]mysqldump -u root -p cd> all1.sql
[root@master~]scp all1.sql 10.1.42.212:/root
二、Slave主机配置
[root@slave~]yum install mariadb-server -y [root@slave~]systemctl start mariadb
还是编辑f
[root@slave~]vim /etc/f
[mysqld]
server-id=2
read-only=on
relay-log=relay-bin
replicate-do-db=cd
replicate-ignore-db=mysql
重新启动
[root@slave~]systemctl restart mariadb
测试中继日志目录是否赋值了
MariaDB [(none)]>show variables like '%relay%' ; 创建同名数据库
MariaDB [(none)]>create database cd;
#导入数据库,和主服务器保持一致
[root@slave~]mysql -u root -p cd < all1.sql
然后就是连接master了
MariaDB [(none)]> change master to
master_host='10.1.42.211',master_user='slave',master_password='123456',master_ log_file='master-bin.000001',master_log_pos=245;
然后,启动slave
MariaDB [(none)]>START SLAVE;
查看slave状态:
MariaDB [(none)]>SHOW SLAVE STATUS;
查看Slave_IO_Running和Slave_SQL_Running,如果都是Yes说明搭建成功,就可以建表插入数据测试了。
如果需要暂停slave 复制,则可使用SQL :
stop slave;
说明: 假如停止MYSQL(MariaDB),然后重新启动,则Slave会随mysqld 自动启动.所以不需要担心日常的重启等操作.。