数据库(mariadb)主从搭建

1,准备两台虚拟机(本文使用centos7演示)!

一:启动虚拟机配置环境安装数据库(俩节点都要执行操作)

--------关闭防火墙----------

systemctl stop firewalld

--------关闭selinux---------

setenforce 0

-----------配置hosts文件----------

vi /etc/hosts

 IP地址分别是两个虚拟机的ip地址主机名可以自己定义但不要一样

二:安装数据库(俩节点都要执行该操作)

----------------------------------------------------------------------------------

yum install -y mariadb mariadb-server

-----------------------------------------------------

安装后修改配置文件添加(server_id项的值设置为ip最后一位即可,两台节点不能重复)

vi /etc/my.cnf   添加以下内容


主 库 :
server-id = 1 ##id号 主从不同相同
read-only=0 ###0为可读可写,1为不可写可读 binlog_format
= mixed ##同步模式 log-bin = mysql-bin replicate-do-db=test ###要同步那个数据库 replicate-ignore-db=test2 ####不同步那个数据库

从 库 :  

server-id = 1 ##id号 主从不同相同
read-only=1 ###0为可读可写,1为不可写可读

-------------------------------------------------------------------------------------------------------------------------

 

启动数据库

 

 systemctl restart mariadb

---------------------------------------------------------------------------------------

运行数据库初始化命令,(New password处需要设置数据库密码)

mysql_secure_installation

 

 

三:登录数据库并授权

master节点运行:使用(mysql -uroot -p你的密码 )登录到数据库输入以下授权语句(node为hosts文件中第二节点主机名根据自己配置更改!)

----------------------------------------------------------------------------------------

mysql -uroot -p000000

create  database   数据库名称

 

grant all privileges on *.* to root@'%' identified by '000000';

grant replication slave on *.* to 'user'@'node'  identified by '000000';

node节点运行:使用(mysql -uroot -p你的密码 )登录到数据库输入以下授权语句(master为第一节点主机名)

----------------------------------------------------------------------------------------

mysql -uroot -p000000

create  database   数据库名称

change master to  master_host='master',master_user='user',master_password='000000';

测试:(在node节点执行下面命令)

start slave ;

show slave status\G;

查看下面两项为yes即可!

 Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

注意:如果开启slave后发现授权语句有误!需要关闭slave从新授权(stop slave;)

---------------------------------------------------------------------------

如果是同步已经有数据的库,需要》》》

 

flush table with read lock;  ###数据库上锁
然后备份数据库,恢复到从库,

主库解锁>>>

unlock tables;

主库使用   show  master    status  ;命令记录主库数据位置,执行复制的时候加上参数即可;

 CHANGE MASTER TO MASTER_HOST='master',MASTER_USER='user',MASTER_PASSWORD='pass',MASTER_LOG_FILE='mysql-bin.000002',master_port=3307,MASTER_LOG_POS=154;

如果主从复制正在进行中,主库重启后生成新的二进制日志文件不会中断复制流程本身。从库在重新连接主库并开始复制时,会依据现有的日志文件序列继续复制,即从上次复制停止的位置(称为“同步点”或“replication position”)开始查找下一个有效的二进制日志文件继续同步。
从库在启动时,或者是手动执行CHANGE MASTER TO命令重置复制时,需要知道新的二进制日志文件名和位置,才能继续复制。