官网:https://www.mongodb.com/docs/manual/
mongo shell教程1:http://c.biancheng.net/mongodb2/connection.html
安装1 :https://www.zhihu.com/question/54602953/answer/3047452434?utm_id=0
安装2:https://www.duidaima.com/Group/Topic/ArchitecturedDesign/9182
使用驱动进行java开发:https://mongodb.github.io/mongo-java-driver
https://www.mongodb.com/docs/drivers/java/sync/v4.5/fundamentals/connection/
安装:https://zhuanlan.zhihu.com/p/615526878
连接:可以使用dbeaver连接dm,不用专门下载dm的管理工具
安装:http://m.hangge.com/news/cache/detail_3354.html#google_vignette
必须在容器所在宿主机的/etc/hosts配置文件中加入配置。否则用程序连接hbase会报:java.net.UnknownHostException: 不知道这样的主机。 (e64682f1b276)
解决:
1:排查防火墙问题
2:在容器所在宿主机的/etc/hosts配置文件中加入配置
hbase部署服务器ip docker hbase的容器id
完毕后重启程序
官网:http://shentongdata.cn/index.php/download/list-27
安装:https://blog.csdn.net/weixin_46603727/article/details/131300046
百度网盘链接:https://pan.baidu.com/s/1-W_tuGk4waewNhr6C8Z00g
提取码:9572
非docker安装:https://blog.csdn.net/KeyarchOS/article/details/132186565
本次版本选择mysql:8.0.21,mysql5.x版本会有各种不稳定问题。部署java程序时需要选择合适的JDK8以上版本
1、拉取镜像:docker pull mysql:8.0.21
2、创建容器并启动
物理机挂载的目录需提前完成创建mkdir -p
-e LANG=C.UTF-8 指定mysql容器默认的编码格式,默认的编码格式会导致进入容器后中文无法复制粘贴的问题。同时和springboot使用中会出现即使设置了编码为utf-8但仍然乱码的现象。
docker run -it -d --name mysql8x \
--privileged=true \
--restart always \
-p 3306:3306 \
-v /opt/mount/mysql8/log:/var/log/mysql \
-v /opt/mount/mysql8/data:/var/lib/mysql \
-v /opt/mount/mysql8/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root123 \
-e TZ=Asia/Shanghai mysql:8.0.21 \
-e LANG=C.UTF-8 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
1. -v挂载
-v挂载容器目录到物理机;
2. -e运行参数
-e 设置运行参数默认root账号密码为root123,时区为上海
3. 其他参数
-e LANG="C.UTF-8"指定容器默认的编码格式,不然会出现中文无法复制粘贴的问题。
后面两个参数为设置数据库默认字符集和排序字符集。用于支持汉语,避免客户端汉字乱码。
3、进入mysql容器
docker exec -it mysql8x bash
若中文乱码可临时使用下面命令
docker exec -it mysql8x env LANG=C.UTF-8 bash
4、登录mysql需要输入用户root和密码
mysql -uroot -p
5、授权远程登录:执行后可navicat连接,一般是授权给新建的用户
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘root123’;
flush privileges;
6、新建用户
新建用户admin,密码admin@123
CREATE USER ‘admin’@‘%’ IDENTIFIED BY ‘admin@123’;
授权admin用户所有数据库权限
GRANT ALL ON . TO ‘admin’@‘%’ WITH GRANT OPTION;
授予新用户远程登录权限
ALTER USER ‘admin’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘admin@123’;
7、修改dns避免一直扫描:IP address ‘xxxx‘ could not be resolved: Name or service not known
进入/etc/mysql 找到mysql的配置文件my.cnf(linux环境下)或者my.ini(windows环境下)进行编辑加入如下一行即可:
[mysqld]
skip-name-resolve
8、更改加密方式,避免远程navicat连接加密失败(若第5步执行后无法连接时再执行此)
如果用Navicat连接的回报不支持caching_sha2_password验证方式的错误。
ALTER USER ‘root’@‘%’ IDENTIFIED BY ‘root123’ PASSWORD EXPIRE NEVER;
9、root密码永不过期修改
alter user ‘root’@‘localhost’ password expire never;
10、刷新数据库,前面所有的修改只有刷新后才生效
FLUSH PRIVILEGES;
使用mysqldump进行数据库的备份,保证数据安全,以防万一。
1、备份脚本vim backup.sh
#!/bin/bash
#保存备份个数,备份10天数据
number=10
#备份保存路径
backup_dir=/opt/mount/mysql8/backup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#mysql容器名
name=mysql8
#用户名
username=root
#密码
password=root123
#将要备份的数据库,为所有的数据库,也可以指定具体的数据库名称,多个用空格隔开即可
database_name=--all-databases
#2、如果备份文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#非docker备份写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
#$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#docker 容器中备份
sudo docker exec ${name} sh -c 'exec mysqldump '$database_name' -u'$username' -p'$password' ' > $backup_dir/$database_name-$dd.sql
#3、写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#4、备份文件的删除处理,找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
2、crontab中加入定时任务进行数据备份。
crontab -e中添加定时任务:复制下行到crontab。
crontab运行日志cat /var/log/cron.log
#0 2 * * * /opt/mount/mysql8/backup.sh >> /opt/mount/mysql8/backup/backup_`date +\%F`.log
3、数据恢复
数据恢复进入mysql后在客户端source你备份的指定文件即可。
进入数据库:mysql -uroot -p
恢复:source 文件
数据备份恢复方案:
下面操作方案2
若数据库没有进行备份被黑后数据也可以使用bin_log进行数据恢复。
前提是bin_log是开启的。查询是否开启,值的on则开启
SHOW VARIABLES LIKE ‘log_bin’;
开启后再查看多少,如果只有1/2个log文件恭喜你没办法恢复了,log也被删除了。
若存在则查看具体操作日志:mysqlbinlog ‘name.log’ 查看其中的操作日志看dele删除是什么时候的。再进行其他操作
连接错误次数过多客户端被锁,在mysql中执行
mysqladmin -u root -p flush-hosts
输入密码回车后重连即可
环境:内网中部署了mysql,没有足够的公网ip,但是需要开发从外网连接mysql如何实现(navicat,java开发等连接)。
方案:
stream {
upstream mysql3306 {
hash $remote_addr consistent;
server 192.168.0.1:33060 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 33060;
proxy_connect_timeout 10s;
proxy_timeout 200s;
proxy_pass mysql3306;
}
}
docker exec nginx nginx -s reload重新加载nginx配置
步骤1:安装docker
步骤2:自制haproxy镜像,centos的系统可以直接拉取镜像
1、下载network包,上传到公网服务器
cd 目标目录
tar -xvf network.gz
cd 解压后的目录
制作docker镜像(末尾是英文状态下的句号):
docker build -f Dockerfile -t myhaproxy:1.0 .
步骤3:查看haproxy镜像id:docker images
步骤4:指定要暴露的数据库集群的内网IP地址与端口。
#数据库内网地址
export CLUSTER_ADDR="192.168.0.1"
#内网数据库端口
export CLUSTER_PORT="33039"
步骤5:指定要暴露的云主机绑定的弹性公网IP地址和端口。
#绑定云主机的弹性公网IP地址
export EXTERNAL_IP="公网ip"
#端口地址,建议3306;可自定义,前提需保证端口通畅,不通可参考“快速入门>云主机网络访问配置”章节排查。
export EXTERNAL_PORT="8086"
步骤6:创建并进入容器,运行代理进程。
docker run -d -p 8086:33039 --restart=always --name myhaproxy -e CLUSTER_PORT=33039 -e CLUSTER_ADDR=192.168.0.1 8f07a8074d0a
步骤7:连接测试
对于步骤4-5仅定义临时变量,为了优化生产建议永久变量,可以经其加入到/etc/profile中
vim /etc/profile
export CLUSTER_ADDR="your mysql addr"
export CLUSTER_PORT="your mysql port"
export EXTERNAL_IP="your external ip"
export EXTERNAL_PORT="your external port"
source /etc/profile
问题1:Navicat连接SQLServer提示:未发现数据源名并且未指定默认驱动程序
解决https://blog.51cto.com/BADAOLIUMANGQZ/6116684
1、创建挂载目录
mkdir -p /opt/mount/redis
mkdir [conf,log,data]
创建日志文件并赋权
cd /opt/mount/redis/log
touch data/redis.log
chmod 777 data/redis.log
2、拉取镜像docker pull redis:6.0.6
3、获取redis.conf配置文件。docker默认是没有的,需要自己从官网下载同版本的配置文件。
修改其中的属性
#数据持久化的配置
appendonly yes
#日志文件配置,默认是空的
logfile “/data/redis.log”
#注释掉,允许其他ip访问
#bind 127.0.0.1
4、创建并启动容器
–requirepass “adsafas” 为redis设置密码。
–restart=always 保证重启
–privileged=true 给redis相关的操作权限
-v 挂载相关的数据配置日志目录
不设置密码在云服务器上非常容易被网络攻击。攻击后会导致redis数据库中数据被清空等现象。
docker run --name redis -p 6379:6379 \
--restart=always \
-v /opt/mount/redis/data/redis:/data \
-v /opt/mount/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /etc/localtime:/etc/localtime \
-v /opt/mount/redis/log/redis.log:/data/redis.log --privileged=true -d redis:latest \
redis-server /etc/redis/redis.conf --requirepass "adsafas"