MariaDB主从复制


1.安装MariaDB 版本10.3

1.vi /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB

baseurl = https://mirrors.shu.edu.cn/mariadb//mariadb-10.3.8/yum/centos7-amd64/

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

2.yum install MariaDB-server MariaDB-client -y

3.移除默认数据目录rm -rf /var/lib/mysql

4.创建新的数据目录:mkdir /opt/data

5.授权:chown -R mysql:mysql /opt/data

6.修改配置文件:vi /etc/my.cnf.d/mysql-clients.cnf

[client]

port                           = 3306

socket                         = /opt/data/mysql.sock

[mysqldump]

quick

max_allowed_packet = 64M

7.修改配置文件:vi /etc/my.cnf.d/server.cnf

[mysqld]

port                           = 3306

socket                         = /opt/data/mysql.sock

datadir                        = /opt/data

tmpdir                         = /opt/data

lower_case_table_names         = 1

log_bin_trust_function_creators = 1

innodb_print_all_deadlocks      = 1

skip-external-locking

skip-name-resolve

autocommit                     = 1

innodb_thread_concurrency      = 8

character_set_server           = utf8

init_connect                   = 'SET NAMES utf8'

init_connect                   = 'SET collation_connection = utf8_general_ci'

8.重新安装:mysql_install_db --defaults-file=/etc/my.cnf --datadir=/opt/data/ --user=mysql

9.安装完成,启动服务:service mysql start

10.设置root密码:mysqladmin -u root password "cfiex"

11.mysql.user表添加:root@%用户:

INSERT INTO `user` VALUES ('%','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'mysql_native_password','*8D3BF28D5C63FB2C58FD558281AB882AB8028619','N','N','',0.000000);

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

flush privileges;

 

注意:步骤10.11可能有差异。(根据相应提示进行)

备注:share目录下有一些特殊情况的初始化脚本。

2.配置主从

I.versions问题:

通常,在跨不同版本的MariaDB进行复制时,最好是主服务器比从服务器更旧。 MariaDB版本通常是向后兼容的,当然旧版本不能始终向前兼容。 另请参阅从MySQL Master复制到MariaDB Slave

参考链接:https://mariadb.com/kb/en/library/setting-up-replication/#replicating-from-mysql-master-to-mariadb-slave

 

II.配置主库master

启用二进制日志记录(如果尚未启用)。 有关详细信息,请参阅激活二进制日志和二进制日志格式。

参考链接:https://mariadb.com/kb/en/activating-the-binary-log/

  https://mariadb.com/kb/en/binary-log-formats/

为主服务器提供唯一的server_id 还必须为所有从站提供server_id 这可以是12^32-1之间的数字,并且对于复制组中的每个服务器必须是唯一的。

使用--log-basename为复制日志指定唯一名称。 如果未指定,则将使用您的主机名,如果主机名发生更改,则会出现问题。

从站需要权限才能连接并从服务器开始复制。 通常,这是通过创建专用从属用户并仅授予该用户权限进行复制(REPLICATION SLAVE权限)来完成的。

参考链接:https://mariadb.com/kb/en/mysqld-options-full-list/#-log-basename

          https://mariadb.com/kb/en/server-system-variables/#server_id

 

MariaDB启用复制示例

将以下内容添加到my.cnf文件中并重新启动数据库。(/etc/my.cnf)

[mariadb]

log-bin

server_id=1

log-basename=master1

服务器标识是网络中每个MariaDB / MySQL服务器的唯一编号。

然后使用mysql命令行客户端执行以下SQL

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'bigs3cret';

GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

 

MySQL启用复制示例:

如果要启用从MySQLMariaDB的复制,可以使用与MariaDB服务器之间几乎相同的方式。 主要区别在于MySQL不支持log-basename。(兼容mysql,若只使用MariaDB不必配置)

[mysqld]

log-bin

server_id=1

要检查的设置

有许多选项可能会影响或破坏复制。 检查以下设置以避免出现问题。

跳过网络。 如果skip-networking = 1,则服务器将仅限制与localhost的连接,并阻止所有远程从站连接。

绑定地址。 同样,如果服务器侦听TCP / IP连接的地址是127.0.0.1localhost),则远程从属连接将失败。

 

现在,您需要在查看二进制日志位置时阻止对数据的任何更改。你将使用它来告诉slave它应该从哪个点开始复制。

在主服务器上,通过运行FLUSH TABLES WITH READ LOCK来刷新并锁定所有表。保持此会话运行 - 退出它将释放锁定。

通过运行SHOW MASTER STATUS获取二进制日志中的当前位置


记录文件和位置详细信息。 如果刚启用了二进制日志记录,则这些日志记录将为空白。

现在,在锁仍然存在的情况下,将数据从主服务器复制到从服务器。 有关如何执行此操作的详细信息,请参阅备份,还原和导入。

https://mariadb.com/kb/en/backup-restore-and-import/

 

III.配置丛库:

配置slave

slave提供唯一的server_id 所有服务器,无论是主服务器还是从服务器,都被赋予server_id 这可以是12^32-1之间的数字,并且对于复制组中的每个服务器必须是唯一的。 需要重新启动服务器才能使此选项的更改生效。

my.cnf文件

例如:

[mariadb]

server_id=2

 


导入数据后,即可开始复制。 首先运行CHANGE MASTER TO,确保MASTER_LOG_FILE与文件匹配,并确保MASTER_LOG_POS与之前SHOW MASTER STATUS返回的位置匹配。 例如:

CHANGE MASTER TO

  MASTER_HOST='master.domain.com',

  MASTER_USER='replication_user',

  MASTER_PASSWORD='bigs3cret',

  MASTER_PORT=3306,

  MASTER_LOG_FILE='mariadb-bin.000096',

  MASTER_LOG_POS=568,

  MASTER_CONNECT_RETRY=10;

如果要从一开始就配置为复制的新主服务器启动从服务器,则不必指定MASTER_LOG_FILEMASTER_LOG_POS

现在使用START SLAVE命令启动slave

通过执行SHOW SLAVE STATUS命令检查复制是否正常:

SHOW SLAVE STATUS \ G

如果正常,则Slave_IO_RunningSlave_SQL_Running的值都应为Yes

Slave_IO_RunningYES

Slave_SQL_RunningYES


参考链接:

https://mariadb.com/kb/en/library/setting-up-replication/

https://mariadb.com/kb/en/library/relay-log/

https://mariadb.com/kb/en/library/replication-and-foreign-keys/

https://mariadb.com/kb/en/library/mysqld-options/

https://www.cnblogs.com/cnmenglang/p/6393769.html

https://www.cnblogs.com/martinzhang/p/3454358.html

https://blog.csdn.net/u010522235/article/details/51865978

 

Comments

Popular posts from this blog

反驳乌有之乡文章《马克思恩格斯对亚当·斯密人性论的批判》:给郝贵生泼点冷水,人性自私论没那么不堪

杨乃武与小白菜案:晚清司法的黑暗与光明

解读《西游记》从唐王游地府与三界权谋:取经行动背后的各方势力的博弈