以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作。
docker pull mysql:5.7
# 如果你只需要跑一个mysql实例,不做主从,那么执行以下命令即可,不用再做后面的参考步骤:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 然后用Shell或客户端软件通过配置(用户名: root 密码: 123456 IP:你的本机IP 端口:3306)来登陆
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log # 开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 1 # 需保证主库和从库的server_id不同,假设主库设为1
replicate-do-db=fileserver # 需要复制的数据库名,需复制多个数据库的话则重复设置这个选项
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log # 开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 2 # 需保证主库和从库的server_id不同,假设从库设为2
replicate-do-db=fileserver # 需要复制的数据库名,需复制多个数据库的话则重复设置这个选项
mkdir -p /data/mysql/data_master
docker run -d --name mysql-master -p 13306:3306 -v /data/mysql/conf/master.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/mysql/data_master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run -d
--name mysql-master // 容器的名称设为mysql-master
-p 13306:3306 // 将host的13306端口映射到容器的3306端口
-v /data/mysql/conf/master.conf:/etc/mysql/mysql.conf.d/mysqld.cnf // master.conf配置文件挂载
-v /data/mysql/data_master:/var/lib/mysql // mysql容器内数据挂载到host的/data/mysql/data_master,用于持久化
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 // mysql的root登陆密码为123456
mkdir -p /data/mysql/data_slave
docker run -d --name mysql-slave -p 13307:3306 -v /data/mysql/conf/slave.conf:/etc/mysql/mysq.conf.d/mysqld.conf -v /data/mysql/data_slave:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 192.168.1.xx 是你本机的内网ip
mysql -u root -h 192.168.1.xx -P13306 -p123456
mysql > grant replication slave on *.* to 'slave'@'%' identified by 'slave';
mysql > flush privileges;
mysql > create database fileserver default character set utf8mb4;
mysql > show master status \G;
# 192.168.1.xx 是你本机的内网ip
mysql -u root -h 192.168.1.xx -P13307 -p123456
mysql > stop slave;
# 这个创建表可忽略,master_log_pos=0, 如果pos是最新的mysql master pos, 请自动创建表
# mysql > create database fileserver default character set utf8mb4;
mysql > change master to master_host='192.168.1.xx',master_port=13306,master_user='slave',master_password='slave',master_log_file='log.000000',master_log_pos=0;
mysql > start slave;
mysql > show slave status \G;
原文:https://www.cnblogs.com/prince5460/p/11660014.html