debian vi上下左右是ABCD
执行以下命令再使用vi编辑器
cp /etc/vim/vimrc ~/.vimrc
执行以下命令再使用vi编辑器
cp /etc/vim/vimrc ~/.vimrc
一.两台服务器的mysql版本要求一致
二.设置master
#mysql master1 config
[mysqld]
server-id=1
log_bin=master-bin
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
log_bin_index=master-bin.index
expire_logs_days = 7
max_binlog_size = 100m
binlog_cache_size = 4m
max_binlog_cache_size= 512m
auto_increment_offset = 1
auto_increment_increment = 1
binlog_do_db = test #设置同步的库
binlog_ignore_db=mysql #设置跳过mysql库
slave_skip_errors = all
三、设置slave
server-id=2
log-bin=mysql-bin
relay-log=slave-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
relay-log-index=slave-relay-bin.index
replicate-wild-ignore-table=information_schema.%
四、配置master的账号等信息
CREATE USER repl_user IDENTIFIED BY 'repl_passwd';
grant replication slave on *.* to 'repl_user'@'%' identified by 'repl_passwd';
这里的%可以是slave的ip地址,不确定就写全部
FLUSH PRIVILEGES;
show master status;
五、执行slave的配置
change master to master_host='master 的 ip地址',master_port=3306,master_user='repl_user',master_password='repl_passwd',master_log_file='master-bin.000004',master_log_pos=154;
repl_passwd需要与上面设置的msater的repl_passwd一致。
master_log_file 的内容需要与上一步执行show master status;中的“File”字段中的值一致
master_log_pos 需要与上一步执行show master status;中的“Position”字段中的值一致
六、调试执行
start slave;
执行后查看slave状态
show slave status
如果看到的状态中Slave_IO_Running 和 Slave_SQL_Running 两个字段都是YES 并且 Last_Error字段为空,说明正常的。
可以再主数据库创建测试库,写数据删除数据等操作做下测试。
七、问题解决
如果第六步不能通过,可以修相应的信息后 先执行
stop slave;
执行完毕后再执行
reset slave;
清空重置Slave服务的相关设置。
并继续执行master绑定操作
change master to master_host='master 的 ip地址',master_port=3306,master_user='repl_user',master_password='repl_passwd',master_log_file='master-bin.000004',master_log_pos=154;
再次启动
start slave;
如此往复的调试执行,直到问题解决。
八、注意点
目前测试docker部署的mysql操作也是可以同步数据的。
做同步之前最好保证master和slave都是没有数据表的,不然同步出问题的概率比较高。配置好同步关系后再往主库中创建数据库导入数据。
一些特殊得查询错误可能是sql规则比较严格的原因。可以在my.cnf中增加 sql_mode = '' 配置。
mysql5.7 直接到 /etc/mysql/mysql.conf.d/ 这个目录下的mysql.cnf配置
apache2: bad user name ${APACHE_RUN_USER} 解决
开工后,发现有个虚拟机的apache没起来,调用apache2 -k start 后,提示如下内容:
apache2: bad user name ${APACHE_RUN_USER}
apache 启动时,是由读取 /etc/apache2/apache2.conf 读取了运行 User
而运行的user环境变量定义在/etc/apache2/envvars
而不是使用默认的登录账户启动,因此apache提供了
apache2ctl 工具来使用,调用
apache2ctl -k start
1.安装docker支持,debian为例
自动安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2.搜索各版本的mysql服务
docker search mysql
3.我选择默认的mysql,该mysql可以支持多版本,默认最新版本
docker pull mysql
4.换版本可以使用
docker pull mysql:版本号
如:
docker pull mysql:5.7
5.创建本地目录
命令:cd /opt/
命令:mkdir mysql_docker
命令:cd mysql_docker/
命令:echo $PWD
6.启动mysql,最后的5.7 可以是最新的last或者其他版本,MYSQL_ROOT_PASSWORD是默认密码,可以修改。
docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:5.7
安装启动基本上就完成了。下面是配置远程访问,如果本地使用可以不配置。直接使用容器名称链接。
7、进入mysql容器,并登陆mysql
命令:docker exec -it mysqlserver bash
命令:mysql -uroot -p
8、开启远程访问权限(mysql8 和 5.7 是不一样的)
下面是mysql8的方式
======================================================================
命令:use mysql;
命令:select host,user from user;
命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
命令:flush privileges;
======================================================================
下面是mysql5.7的方式
======================================================================
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456';
执行完上面的语句之后还不会立即生效,还需要让mysql重新加载用户权限:
flush privileges;
======================================================================
9.远程连接mysql测试。
查看docker日志
命令:docker logs -f --tail 10 a4dac74d48f7
安装如下:
https://apt.syncthing.net/
安装后执行,增加外网访问权限。
修改 /root/.config/syncthing/config.xml 中的 127.0.0.1 为 0.0.0.0
然后再次启动
./usr/bin/syncthing