1:准备两个虚拟机
1)192.168.0.212 mysqlA
2)192.168.0.166 mysqlB
2:启动docker中的mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
3:进入容器内修改配置 docker exec -it 6dbfb2fb3cda /bin/bash
1)6dbfb2fb3cda 为mysql的容器id,可在docker ps中查看启动的mysql
2)找到 进入路径 cd etc/mysql 修改cd my.cnf文件 我用vim打开
如果没有可以下载 执行 apt-get update==>apt-get install vim
注意:my.cnf中的 binlog-do-db=db_dbs_config #是要同步的数据库 mysqlA和mysqlB一定要相同
192.168.0.212 mysqlA 的配置文件vim my.cnf修改为
[mysqld]
skip-name-resolve
server-id=1 #必须与其他服务器不同,且必须为1到232–1之间的一个正整数值
#i am master
log-bin=mysql-bin #二进制文件
binlog-do-db=db_dbs_config #要同步的数据库
binlog-ignore-db=information_schema#不同步的数据库
binlog-ignore-db=db_Im
binlog-ignore-db=db_Mdr
binlog-ignore-db=db_mrs
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=test
slave-skip-errors=1032,1062
192.168.0.166 mysqlB 的配置文件vim my.cnf修改为
[mysqld]
skip-name-resolve
server-id=2
#i am master
log-bin=mysql-bin
binlog-do-db = db_dbs_config
binlog-ignore-db=information_schema
binlog-ignore-db=db_Im
binlog-ignore-db=db_Mdr
binlog-ignore-db=db_mrs
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=test
slave-skip-errors=1032,106
3)重启mysql
4:允许root远程访问
1)进入mysql容器内(第三条第一点有如何进入容器),连接mysql
命令:mysql - uroot -proot
2)选择mysql数据库
命令:use mysql
3)修改远程登录权限
mysql> SELECT User, Password, Host FROM user; -- 查看现有用户,密码及允许连接的主机
+------+----------+-----------+
| User | Password | Host |
+------+----------+-----------+
| root | | localhost |
+------+----------+-----------+
执行命令给 root用户赋权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION; 指定 192.168.1.100可以访问,如果想不限制IP 把IP改为%
5:创建数据库和该数据库的用户,创建一个测试表test,两个数据库要相同
6:设置主主
1)在mysqlA 查看A的master 命令 show master status;
记录 file:mysql-bin.000008 文件
Position:107 文件读取点 可以根据该点回复
2)在mysqlB 查看B的master 命令 show master status;
记录 file:mysql-bin.000005 文件
Position:256 文件读取点 可以根据该点回复
3)给A指定B的master
mysql> change master to
-> master_host='192.168.0.166',
-> master_user='gaihe',
-> master_password='gaihe',
-> master_log_file='mysql-bin.000005',
-> master_log_pos=256;
4)给B指定A的master
mysql> change master to
-> master_host='192.168.0.212',
-> master_user='gaihe',
-> master_password='gaihe',
-> master_log_file='mysql-bin.000008 ',
-> master_log_pos=107;
mysql数据库命令
grant all on *.* to 'gaihe'@'%';//分配数据库权限
revoke all on *.* from 'xiaogang' @'%';//收回数据库权限