2016-03-28 10 views
0

Amacım bir Docker Konteynerinde çalışan bir Percona XtraDB Kurulumu elde etmektir. Bunun için aşağıdaki yapılandırmayı yazdım.Docker'da Önyükleme Percona Xtradb Kümesi hata verir: Ayrıcalık tablolarını açamaz ve kilitleyemezsiniz: Tablo 'mysql.user' mevcut değil

Dockerfile:

FROM ubuntu:wily 
ENV DEBIAN_FRONTEND noninteractive 
# 
# ENVIRONMENT INSTALL 
# 
RUN apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get install -y wget curl netcat python-dev python-setuptools python-software-properties vim 
RUN easy_install j2cli 
COPY my.cnf.j2 /templates/ 
COPY docker-entrypoint.sh/
RUN chmod +x docker-entrypoint.sh/
# 
# PERCONA XTRADB CLUSTER INSTALL 
# 
RUN echo "deb http://repo.percona.com/apt wily main" >>  /etc/apt/sources.list.d/percona.list 
RUN echo "deb-src http://repo.percona.com/apt wily main" >>  /etc/apt/sources.list.d/percona.list 
RUN apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A 
RUN apt-get update && apt-get install -y percona-xtradb-cluster-56 
ENTRYPOINT ["/docker-entrypoint.sh"] 

docker-entrypoint.sh

#!/bin/bash -e 
j2 /templates/my.cnf.j2 > /etc/mysql/my.cnf 
exec bash 

my.cnf.j2

[mysqld] 
user=mysql 
default_storage_engine=InnoDB 
basedir=/usr 
datadir=/var/lib/mysql 
socket=/var/run/mysqld/mysqld.sock 
innodb_autoinc_lock_mode=2 
log_queries_not_using_indexes=1 
max_allowed_packet=128M 
binlog_format=ROW 
wsrep_provider=/usr/lib/libgalera_smm.so 
wsrep_node_address={{node_ip}} 
wsrep_cluster_name="mycluster" 
wsrep_cluster_address=gcomm:// 
wsrep_node_name={{node_name}} 
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth="test:test" 

!includedir /etc/mysql/conf.d/ 

wsrep_cluster_address = gcomm: // normalde 3 düğümün bir listesini tutar WAN-IPs, gizlilik nedeniyle onları kaldırdım.

docker build --rm -t test . 

Başlangıç ​​ile de iyi çalışır: Görüntüyü Bina

ile mükemmel çalışıyor benim sunucunun WAN-IP

docker run --name Test1 -e "node_ip=127.0.0.1" -e "node_name=Test1" -p 3306:3306 -p 4567:4567 -p 4444:4444 -p 4568:4568 -i -t test 

değişken node_ip noktaları, ben 127.0 olarak ayarlayın .0.1 sadece gizlilik nedenleriyle.

Ama birlikte kapta mysql bootstrap çalıştığınızda:

2016-03-28 09:24:09 354 [Note] Server hostname (bind-address): '*'; port: 3306 
2016-03-28 09:24:09 354 [Note] IPv6 is available. 
2016-03-28 09:24:09 354 [Note] - '::' resolves to '::'; 
2016-03-28 09:24:09 354 [Note] Server socket created on IP: '::'. 
2016-03-28 09:24:09 354 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 
160328 09:24:09 mysqld_safe mysqld from pid file /var/lib/mysql/8605688929d8.pid ended 

Nasıl bu benim kapsayıcı çalışan XtraDB almak çözebilir:

/etc/init.d/mysql bootstrap-pxc 

bu hatayı alıyorum?

+0

afaict çalışmıyor mysql_install_db bunun için bir neden var mı? (çalıştırılması gerekiyordu ve sonra da mysql.mysql -R/var/lib/mysql) olması gerekiyordu. – Oneiroi

cevap

0

Bir izin sorunu olabilir. senin FROM statment sonra aşağıdaki eklemeyi deneyin:

RUN useradd mysql \ 
    && mkdir /var/lib/mysql \ 
    && chown -R mysql:mysql /var/lib/mysql 
+0

Ne yazık ki yardımcı olmadı, hala aynı problemim var. –

1

mysql_install_db chown mysql.mysql -R /var/lib/mysql service mysql start

yukarıdaki sorun olmadan çalışması için görünür, bunu test edin.

İlgili konular