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。
这可以是1到2^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启用复制示例:
如果要启用从MySQL到MariaDB的复制,可以使用与MariaDB服务器之间几乎相同的方式。
主要区别在于MySQL不支持log-basename。(兼容mysql,若只使用MariaDB不必配置)
[mysqld] log-bin server_id=1 |
要检查的设置
有许多选项可能会影响或破坏复制。 检查以下设置以避免出现问题。
跳过网络。 如果skip-networking = 1,则服务器将仅限制与localhost的连接,并阻止所有远程从站连接。
绑定地址。 同样,如果服务器侦听TCP / IP连接的地址是127.0.0.1(localhost),则远程从属连接将失败。
现在,您需要在查看二进制日志位置时阻止对数据的任何更改。你将使用它来告诉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。 这可以是1到2^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_FILE和MASTER_LOG_POS。
现在使用START
SLAVE命令启动slave:
通过执行SHOW SLAVE STATUS命令检查复制是否正常:
SHOW SLAVE STATUS \ G
如果正常,则Slave_IO_Running和Slave_SQL_Running的值都应为Yes:
Slave_IO_Running:YES
Slave_SQL_Running:YES
参考链接:
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
Post a Comment