分类目录归档:运维日志

Jenkins 构建时出现Room数据库Each bind variable in the query must have a matching method parameter. Cannot find method parameters for

在Jenkins构建时候发现这样的一般报错信息:

warning: Current JDK version 1.8.0_242-b08 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.
error: Each bind variable in the query must have a matching method parameter. Cannot find method parameters for :xMax, :yMax. - com.geostar.android.sdk.common.dao.IMediaDao.queryMedias(double, double, double, double)
error: Unused parameters: arg2,arg3 - com.geostar.android.sdk.common.dao.IMediaDao.queryMedias(double, double, double, double)
2 errors
1 warning

问题很明显了,使用Room插件的时候生成的参数被替换成arg2arg3 导致无法绑定参数信息。

项目中使用的room插件是版本是2.3.0,如果是低于这个版本的还是没有提示这一行信息的:warning: Current JDK version 1.8.0_242-b08 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.

这样提示就很明显了,Jenkins是使用docker来搭建的,那么只需要将JDK升级到11即可,可以再docker中使用JAVA_HOME的环境变量。

使用的docker-compose文件来搭建,所以只需要指定一下环境参数即可,其他的方法可以找网上参考。

指定environment环境变量

version: '3'
services:
    jenkins:
        hostname: jenkins
        container_name: jenkins
        image: jenkins/jenkins
        restart: always
        environment:
            JAVA_HOME: /var/jenkins_home/tools/jdk/jdk-11/
        ports:
            - "8080:8080"
        volumes:
            - /data/docker/jenkins/:/var/jenkins_home
        networks:
            - app_net

networks:
  app_net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.10.0.0/16

Jenkins 脚本命名行

清理构建历史

1、删除 历史构建


//项目名称
def jobName = "you-job-name"
//删除小于等于64的构建历史
def maxNumber = 40
Jenkins.instance.getItemByFullName(jobName).builds.findAll {
  it.number <= maxNumber
}.each {
  it.delete()
}

2、清空所有构建

//项目名称
def jobName = "geostar-xuncha-portal-fat"
def item = Jenkins.instance.getItemByFullName(jobName);
item.builds.each {
  it.delete()
}
// 更新构建Number
item.updateNextBuildNumber(1)

docker 安装jenkins容器

docker 中安装Jenkins很方便,而且不会污染服务器的环境,采用docker是再适合不过了。

安装Jenkins镜像

# 这里安装官方镜像
docker pull docker.io/jenkins

创建docker file

mkdir -d /home/docker/jenkins
cd /home/docker
vim jenkins.yml

jenkins.yml 文件内容如下:

version: '3'
services:
    nexus:
        hostname: jenkins
        container_name: jenkins
        image: docker.io/jenkins
        restart: always
        ports:
            - "8080:8080"
        volumes:
            - /home/docker/jenkins/:/jenkins-data

启动容器

如果没有安装docker-compose的先安装该命令

# 安装docker-compose
yum install docker-compose

通过docker file 创建和运行容器,-d 表示后台运行

# 启动
docker-compose --file jenkins.yml  up -d
# 查看
docker ps

正常启动后就能访问,在浏览器输入: http://127.0.0.1:8080 访问。

镜像操作

docker pull redis:1.0 – 安装镜像,其中1.0为版本号,不填写默认是最新的。

docker start containerId 启动容器

docker exec -it containerId /bin/bash 进入容器

redis

安装容器:

docker run -p 6379:6379 -v $PWD/data:/data -d redis redis-server --appendonly yes

进入容器:

docker exec -it 71352213d7d6 redis-cli

mysql

安装容器:

docker pull mysql

sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=raedev@qq.com -d mysql containerId

Mysql数据库备份与恢复

备份数据库

备份整个数据库

mysqldump -u root -p source_db > /tmp/souce_db.bak

备份整个数据库 gzip压缩

mysqldump -u root -p source_db   | gzip > /tmp/souce_db.gz

指定备份某些表

mysqldump -u root -p  source_db --tables tb_user tb_config |gzip >  /tmp/souce_db.gz

恢复数据库

$ mysql -uroot -p
$ show databases;
$ use target_db;
$ source /tmp/souce_db.bak

恢复数据库 gzip压缩

gunzip < souce_db.gz | mysql -uroot -p source_db

docker 安装 redis

1、下载镜像

$ docker pull redis

2、官网下载redis.conf配置文件

$ curl http://download.redis.io/redis-stable/redis.conf > redis.conf

2、创建容器

$ docker run --name redis -p 6379:6379 -v  /docker/redis/:/etc/redis/ -itd redis  /etc/redis/redis.conf --appendonly yes

mysql 备份数据库常用命令

1、备份命令

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql

例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword –database cmdb > /data/backup/cmdb.sql

2、备份压缩

导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 | gzip > 文件名.sql.gz

例如: mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword –database cmdb | gzip > /data/backup/cmdb.sql.gz

3、备份同个库多个表

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 表1 表2 …. > 文件名.sql

例如 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql

4、同时备份多个库

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –databases 数据库名1 数据库名2 数据库名3 > 文件名.sql

例如:mysqldump -h192.168.1.100 -uroot -ppassword –databases cmdb bbs blog > /data/backup/mutil_db.sql

5、备份实例上所有的数据库

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –all-databases > 文件名.sql

例如:mysqldump -h192.168.1.100 -p3306 -uroot -ppassword –all-databases > /data/backup/all_db.sql

6、备份数据出带删除数据库或者表的sql备份

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –add-drop-table –add-drop-database 数据库名 > 文件名.sql

例如:mysqldump -uroot -ppassword –add-drop-table –add-drop-database cmdb > /data/backup/all_db.sql

7、备份数据库结构,不备份数据

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql

例如:mysqldump –no-data –databases db1 db2 cmdb > /data/backup/structure.sql

centos 常用命令总结

防火墙

开启防火墙

systemctl start firewalld

开启端口号

firewall-cmd --zone=public --add-port=80/tcp --permanent

  • –zone #作用域
  • –add-port=80/tcp #添加端口,格式为:端口/通讯协议
  • –permanent #永久生效,没有此参数重启后失效

查看端口号

firewall-cmd --list-ports

重启防火墙

firewall-cmd --reload

文件操作

删除文件夹

rm -rf youdir

解压ZIP

yum install zip unzip

unzip filename

SSH 复制文件

scp LocalFile UserName@RemoteIP:RemoteFile

配置虚拟内存

参考文章

  1. 添加swap文件大小为2G
    默认情况下, of=/swapfile 即swapfile文件创建在/var/目录下。
    若我在创建在/opt/image/目录下, 则下面所有的操作里有/swapfile的都要改为/opt/image/swap
    dd if=/dev/zero of=/swapfile bs=1k count=2048000
  2. 创建SWAP文件
    mkswap /swapfile
  3. 激活SWAP文件
    swapon /swapfile
  4. 查看SWAP信息是否正确
    swapon -s
  5. 添加到fstab文件中让系统引导时自动启动
    注意, 这里是采用了swapfile文件的默认路径, 即/var/swapfile。若你上面的操作中swapfile文件不是在/var/目录下, 则下面的/var/swapfile也要相应修改为自己设写的。
    echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
  6. 用命令free检查2G交换分区生效
    free -m
    或者, 检查meminfo文件
    grep SwapTotal /proc/meminfo
  7. 释放SWAP文件
    swapoff /swapfile
  8. 删除SWAP文件
    rm -fr /swapfile

RAE 原创文章,转载请注明出处

docker 安装容器以及常用操作命令

镜像操作


# 安装镜像,其中1.0为版本号,不填写默认是最新的。
docker pull redis:1.0

# 启动容器
docker start containerId

# 进入容器
docker exec -it containerId /bin/bash

# 以root 用户进入容器
docker exec -u root -it yourconainer /bin/bash

安装redis容器


# 安装容器:
docker run -p 6379:6379 -v $PWD/data:/data  -d redis redis-server --appendonly yes

# 进入容器
docker exec -it 71352213d7d6 redis-cli

安装mysql容器


# 安装容器
docker pull mysql

# 运行
sudo docker run --name mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=raedev@qq.com -d mysql containerId