mysql主从复制

mysql主从复制搭建

在主服务上将用到的image输出到文件

$ docker save -o mariadb.tar mariadb:latest

$ docker save -o PHPmyadmin.tar PHPmyadmin:latest

在从服务器的docker中导入到本地

1.将文件导入容器

docker load -i mariadb.tar

docker load -i phpmyadmin.tar

安装docker容器

1 . 从主服务器 上拷贝 mariadb.tarPHPmyadmin.tarimge

scp -r root@ip:/tmp/mariadb.tar /tmp/

scp -r root@ip:/tmp/PHPmyadmin.tar /tmp/

配置docker-compose.yml

version: '3'
services:
        mysql:
                image: mariadb:10.4.8
                restart: always
                container_name: slave
                extra_hosts:
                        - 域名:IP
                ports:
                        - 3306:3306
                volumes:
                        - ./mysql:/etc/mysql
                        - ./mysql-data:/var/lib/mysql
                        - /etc/localtime:/etc/localtime:ro
                environment:
                        - MYSQL_ROOT_PASSWORD=password
                        - TZ=Asia/Shanghai
        phpmyadmin:
                image: phpmyadmin/phpmyadmin:latest
                container_name: slave
                volumes:
                        - /etc/localtime:/etc/localtime:ro
                ports:
                        - 80:80
                environment:
                        - PMA_ARBITRARY=1

到主服务上备份全量数据库

mysqldump -uroot -ppassword 数据库名 > 数据库名.sql

拷贝文件

将备份文件从容器考入宿主机

docker cp 容器名:容器内路径 /备份数据库名.sql 宿主机路径

将备份文件宿从主机考入指定容器

docker cp 宿主机路径/备份数据库名 指定容器名:容器内路径

配置主库my.cnf

[mysqld]

server-id = 1 设定主机

server-idlog_bin= /var/log/mysql/mysql-bin.

logbinlog_format= mixed # 日志格式

binlog_expire_logs_seconds = 604800 # 日志过期的时间秒数

max_binlog_size = 200M # 最大二进制日志文件

binlog_do_db = 数据库名 数据库

新建主服务数据库

mysql -uroot -ppassword

ceeate database 数据库名;

导入备份文件

mysql -uroot -p123456 数据库名< /tmp/数据库名.sql

新建slave用户并赋权

登录mysql
mysql -uroot -ppassword
分配账号
CREATE USER 'test-slave'@'%' IDENTIFIED BY '123456';

``GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘test-slave’@’%’;刷新权限flush privileges;`

查看bin-logporsition

mysql中执行

show master status;

查询出的两个参数,我们配置从服务器上的mysql需要用到
至此,主服务器上的mysql配置完毕

拷贝文件到从宿主机

将备份文件从主宿主机考入从宿主机

docker cp 住宿主机路径 /备份数据库名 从宿主机路径

将备份文件从宿主机考入容器内

docker cp 宿主机路径/备份数据库名 容器名:容器内路径

在从服务器建立数据库

mysql -uroot -ppassword

create database 数据库名 ;

配置my.cnf

[mysqld]
server-id=2( 这个和主服务器的id要不同)1

导入备份文件

mysql -uroot -ppassword 数据库名< /容器内路径/备份数据库名.sql

停止slave

stop slave

创建复制请求

change master to master_host='主服务器地址',

master_user='test-slave', master_password='123456',

master_log_file='mysql-bin.000005',

master_log_pos=1662,``port:3306;

启动slave

start slave

在从服务数据库查看是否设置成功,

show slave status\G;

显示

Slave_IO_STATE:Waiting for master to send event

Master_host:主服务器地址

Master_user:test-slave

Master_port:3306

connnect_retry:60

Master_log_file:mysql-bin.000005

Read_Master_log_pos:1662

Relay_log_file:AE6Z*****-relay-bin.000002

Relay_log_pos:1415

Slave_IO_Running:yes

Slave_SQL_Running:yes

其中Slave_IO_Running:yes Slave_SQL_Running:yes都显示yes既成功

在主服务创建查询账号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值