<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Discover Docker, K8s and Hashicorp Nomad with Maksym Prokopov: posts tagged mysql</title>
<link>https://blog.it-premium.com.ua/tags/mysql/</link>
<description>The blog about containerisation, virtual machines and useful shell snippets and findings</description>
<author></author>
<language>en</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>The blog about containerisation, virtual machines and useful shell snippets and findings</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Fully automated docker mysql database backup from remote low-end NAS</title>
<guid isPermaLink="false">182</guid>
<link>https://blog.it-premium.com.ua/all/fully-automated-mysql-database-dump-backup-from-remote-host/</link>
<pubDate>Thu, 17 Aug 2017 10:27:09 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/fully-automated-mysql-database-dump-backup-from-remote-host/</comments>
<description>
&lt;p&gt;The main idea is to have fully automated docker database backup from low end D-Link NAS DNS-320.&lt;/p&gt;
&lt;p&gt;Solution design is following:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;My backup box will copy backup.sh script to the remote coreos-03 host.&lt;/li&gt;
&lt;li&gt;Then remote host copies backup.sh script into database container.&lt;/li&gt;
&lt;li&gt;Backup box executes docker command “docker exec itservice_db_1 backup.sh” on coreos-03 host, which, in turn, executes mysqlbackup. SQL dump is captured directly from command output and then gzipped.&lt;/li&gt;
&lt;li&gt;Rsnapshot saves folder with gzipped SQL dump and rotates old backup folders as necessary.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, we will need only&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ssh&lt;/li&gt;
&lt;li&gt;tar&lt;/li&gt;
&lt;li&gt;rsnapshot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is my working implementation:&lt;/p&gt;
&lt;p&gt;script backup.sh&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
## env vars are already in docker container
/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;script backup-coreos-itservice.sh&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/ffp/bin/scp /ffp/home/root/backup.sh core@coreos-03:/home/core/itservice/backup.sh
/usr/sbin/ssh -C core@coreos-03 &amp;quot;docker cp /home/core/itservice/backup.sh itservice_db_1:/usr/local/bin/backup.sh&amp;quot;
/usr/sbin/ssh -C core@coreos-03 &amp;quot;docker exec itservice_db_1 /usr/local/bin/backup.sh&amp;quot; &amp;gt; latest.sql
/opt/bin/tar czf itservice-sql-dump.tar.gz latest.sql --remove-files&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;rsnapshot.conf&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;...
backup_script/mnt/HD/HD_a2/ffp/home/root/backup-coreos-itservice.shcoreos-03/itservice_db_1
...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;crontab&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;0 */4 * * * rsnapshot hourly
30 3 * * *  rsnapshot daily
0  3 * * 1  rsnapshot weekly
30 2 1 * *  rsnapshot monthly&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Keep in mind, that you will need to generate ssh keys for your backup box and add it to authorized_keys on coreos-03 host, but this is out of scope this article.&lt;/p&gt;
</description>
</item>

<item>
<title>Docker MySQL container “Field doesn’t have a default value”</title>
<guid isPermaLink="false">174</guid>
<link>https://blog.it-premium.com.ua/all/docker-mysql-container-field-doesnt-have-a-default-value/</link>
<pubDate>Mon, 23 Jan 2017 10:11:48 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/docker-mysql-container-field-doesnt-have-a-default-value/</comments>
<description>
&lt;p&gt;issue caused by long lasting MySQL bug &lt;a href="http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values"&gt;http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Short path add this command to mysql container&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --sql_mode=NO_ENGINE_SUBSTITUTION&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That will fix issue.&lt;/p&gt;
</description>
</item>

<item>
<title>Simple docker mysql backup/restore</title>
<guid isPermaLink="false">169</guid>
<link>https://blog.it-premium.com.ua/all/simple-docker-mysql-backup-restore/</link>
<pubDate>Fri, 13 Jan 2017 09:35:03 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/simple-docker-mysql-backup-restore/</comments>
<description>
&lt;p&gt;&lt;a href="https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb"&gt;https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Backup&lt;/h2&gt;
&lt;p&gt;docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE &gt; backup.sql&lt;/p&gt;
&lt;h2&gt;Restore&lt;/h2&gt;
&lt;p&gt;cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE&lt;/p&gt;
</description>
</item>

<item>
<title>Use MySQL in docker with utf-8 encoding and utf8_general_ci</title>
<guid isPermaLink="false">163</guid>
<link>https://blog.it-premium.com.ua/all/use-mysql-in-docker-with-utf-8-encoding-and-utf8-general-ci/</link>
<pubDate>Tue, 08 Nov 2016 10:51:28 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/use-mysql-in-docker-with-utf-8-encoding-and-utf8-general-ci/</comments>
<description>
&lt;ul&gt;
&lt;li&gt;Use custom command to launch mysql container with right collation:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Alter existing database:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;use&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker-compose exec db mysql -uuser -ppass database&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;to exec your queries in running container.&lt;/p&gt;
</description>
</item>

<item>
<title>How to launch MySQL in docker with collation and charset</title>
<guid isPermaLink="false">162</guid>
<link>https://blog.it-premium.com.ua/all/how-to-launch-mysql-in-docker-with-collation-and-charset/</link>
<pubDate>Fri, 04 Nov 2016 15:06:39 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/how-to-launch-mysql-in-docker-with-collation-and-charset/</comments>
<description>
&lt;p&gt;You can use following line in service description in docker-compose.yml for mysql database&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>More secure mysqldump for docker container</title>
<guid isPermaLink="false">159</guid>
<link>https://blog.it-premium.com.ua/all/more-secure-mysqldump-for-docker-container/</link>
<pubDate>Tue, 18 Oct 2016 10:58:29 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/more-secure-mysqldump-for-docker-container/</comments>
<description>
&lt;p&gt;In case you have warning message about insecure user and password usage from command line you can do following:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;use mysql_config_editor set &lt;s&gt;login-path=local &lt;/s&gt;host=localhost &lt;s&gt;user=db_user &lt;/s&gt;password executed in container via exec. That will create encrypted file.&lt;/li&gt;
&lt;li&gt;Specify --login-path=local instead of -u user and -p password in your backup script.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have my backups via rsnapshot. This is something like TimeMachine for Mac with handy directory structure and without duplication.&lt;/p&gt;
&lt;p&gt;And my backup script looks like this:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/ssh -i /mnt/HD/HD_a2/ffp/home/root/id_rsa_nexus.key -C core@myipaddress &amp;quot;docker exec itservice_db_1 mysqldump --login-path=local itservice_production&amp;quot; &amp;gt;
 mysqlbackup.sql&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That will create mysql dump on your remote backup host without passing user and password in more secure way.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker-compose exec db mysql_config_editor set --login_path=local --host=localhost --user=itservice --password&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;will ask password and save credentials in container.&lt;/p&gt;
&lt;p&gt;Resources: &lt;a href="http://stackoverflow.com/questions/20751352/suppress-warning-messages-using-mysql-from-within-terminal-but-password-written"&gt;http://stackoverflow.com/questions/20751352/suppress-warning-messages-using-mysql-from-within-terminal-but-password-written&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>How to load mysql dump from local host</title>
<guid isPermaLink="false">158</guid>
<link>https://blog.it-premium.com.ua/all/how-to-load-mysql-dump-from-local-host/</link>
<pubDate>Tue, 18 Oct 2016 10:27:23 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/how-to-load-mysql-dump-from-local-host/</comments>
<description>
&lt;p&gt;The main thing is to specify -i key, it allows input redirection from host to container.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker exec -i container mysql -uuser -ppassword database &amp;lt; dump.sql&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Снятие бекапа из mysql контейнера при помощи Ansible</title>
<guid isPermaLink="false">136</guid>
<link>https://blog.it-premium.com.ua/all/snyatie-bekapa-iz-mysql-konteynera-pri-pomoschi-ansible/</link>
<pubDate>Thu, 21 Jul 2016 12:19:21 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/snyatie-bekapa-iz-mysql-konteynera-pri-pomoschi-ansible/</comments>
<description>
&lt;p&gt;Вот простой рецепт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;- name: backup mysql from container
  gather_facts: no
  vars:
    - db_container: container_db_1
    - image: mysql:5.6
    - db:
        name: database_name
        user: root
        password: root
    - dump_file: ./dump-latest.sql
  tasks:
    - name: run backup container
      shell: &amp;quot;docker run --rm --link {{db_container}}:db --entrypoint \&amp;quot;/usr/bin/mysqldump\&amp;quot; {{image}} -hdb -u{{db.user}} -p{{db.password}} {{db.name}}&amp;quot;
      register: output

    - name: copy output
      local_action: copy content=&amp;quot;{{ output.stdout }}&amp;quot; dest=&amp;quot;{{dump_file}}&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Работает БЕЗ создания файлов на удаленном хосте, помимо, конечно, временного контейнера.&lt;/p&gt;
&lt;script type="text/javascript" src="https://asciinema.org/a/680nbb59m9ko2ptrdkvf79123.js" id="asciicast-680nbb59m9ko2ptrdkvf79123" async&gt;&lt;/script&gt;
</description>
</item>

<item>
<title>Еще один быстрый скрипт для бекапа mysql из docker</title>
<guid isPermaLink="false">135</guid>
<link>https://blog.it-premium.com.ua/all/esche-odin-bystry-skript-dlya-bekapa-mysql-iz-docker/</link>
<pubDate>Thu, 21 Jul 2016 11:59:16 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/esche-odin-bystry-skript-dlya-bekapa-mysql-iz-docker/</comments>
<description>
&lt;p&gt;Мой предыдущий &lt;a href="http://blog.it-premium.com.ua/all/prostoy-sposob-sdelat-bekap-mysql-v-docker-konteynere/"&gt;способ “просто запусти и залинкуй контейнер”&lt;/a&gt; разбился о проблемы с поддержкой mysql версии 5.7 и выше и то, что docker-compose версии 2 не поддерживает публикацию environment переменных слинкованного контейнера.&lt;/p&gt;
&lt;p&gt;Поэтому пришлось разработать свой, крайне простой способ для выгрузки mysql бекапа из mysql контейнера. Поскольку у mysql свой хитры entrypoint, простая замена CMD не работала.&lt;/p&gt;
&lt;p&gt;Вот работающий код.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker run \
    --rm \
    --link container_db_1:db \
    --entrypoint &amp;quot;/usr/bin/mysqldump&amp;quot; mysql:5 -hdb -uroot -proot database &amp;gt; ./backup/mysql-latest.sql&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;обратите внимание, что &gt; ./backup/mysql-latest.sql завернет вывод из контейнера в файл на хосте, а не внутри.&lt;/p&gt;
&lt;p&gt;В качестве образа mysql:5 используйте тот образ, который уже используется в вашем проекте (mysql:5.6, например).&lt;/p&gt;
&lt;p&gt;Чуть позднее сделаю рецепт для ansible.&lt;/p&gt;
</description>
</item>

<item>
<title>История про баг в бекапе confirm/mysql-backup</title>
<guid isPermaLink="false">126</guid>
<link>https://blog.it-premium.com.ua/all/istoriya-pro-bag-v-bekape-confirm-mysql-backup/</link>
<pubDate>Mon, 18 Jul 2016 15:55:01 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/istoriya-pro-bag-v-bekape-confirm-mysql-backup/</comments>
<description>
&lt;p&gt;Прекрасная идея и достойное воплощение &lt;a href="https://blog.confirm.ch/backup-mysql-mariadb-docker-container/"&gt;MySQL бекапов прямо из контейнера&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Разбилась об изменение в дефолтном MySQL 5.7 TIMESTAMP&lt;br /&gt;
&lt;a href="http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html"&gt;http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;О чем и &lt;a href="https://github.com/maxbube/mydumper/issues/6"&gt;отрепортил автору mydumper на github&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Простой способ сделать бекап MySQL в Docker контейнере</title>
<guid isPermaLink="false">124</guid>
<link>https://blog.it-premium.com.ua/all/prostoy-sposob-sdelat-bekap-mysql-v-docker-konteynere/</link>
<pubDate>Thu, 14 Jul 2016 13:38:55 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/prostoy-sposob-sdelat-bekap-mysql-v-docker-konteynere/</comments>
<description>
&lt;p&gt;существует такой специальный контейнер confirm/mysql-backup, который создан, что бы делать бекапы&lt;/p&gt;
&lt;p&gt;для этого запустите контейнер с маппингом my_local_backup_dir:/backups и будет создан свежий бекап и положен в вашу my_local_backup_dir.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker run --name demo_backup --link demo_db -v /var/demo_backup:/backup -d confirm/mysql-backup&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для восстановления добавьте ключ окружения MODE=RESTORE&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;docker run --name demo_backup --link demo_db -v /var/demo_backup:/backup -d confirm/mysql-backup -e MODE=RESTORE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Подробнее здесь &lt;a href="https://blog.confirm.ch/backup-mysql-mariadb-docker-container/"&gt;https://blog.confirm.ch/backup-mysql-mariadb-docker-container/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Рецепт для Ansible&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;- name: backup mysql container
  hosts: coreos
  tasks:
    - name: backup mysql
      docker_container:
        name: mysql-backup
        image: confirm/mysql-backup
        links:
          - mprokopovmichellekievua_db_1
        volumes:
          - /home/core/sql:/backup&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;после выполнения контейнера будет создан бекап следующего вида:&lt;br /&gt;
каталог export-20160714-124628&lt;br /&gt;
в котором будут отдельно файлы схемы и данных по таблицам:&lt;/p&gt;
&lt;p&gt;metadata michelle_wordpress.wp_postmeta-schema.sql.gz michelle_wordpress.wp_term_taxonomy-schema.sql.gz  michelle_wordpress.wp_usermeta.sql.gz&lt;br /&gt;
michelle_wordpress.wp_commentmeta-schema.sql.gz  michelle_wordpress.wp_postmeta.sql.gz michelle_wordpress.wp_term_taxonomy.sql.gz    michelle_wordpress.wp_users-schema.sql.gz&lt;br /&gt;
michelle_wordpress.wp_comments-schema.sql.gz michelle_wordpress.wp_posts-schema.sql.gz michelle_wordpress.wp_termmeta-schema.sql.gz    michelle_wordpress.wp_users.sql.gz&lt;br /&gt;
michelle_wordpress.wp_links-schema.sql.gz michelle_wordpress.wp_posts.sql.gz michelle_wordpress.wp_terms-schema.sql.gz&lt;br /&gt;
michelle_wordpress.wp_options-schema.sql.gz michelle_wordpress.wp_term_relationships-schema.sql.gz  michelle_wordpress.wp_terms.sql.gz&lt;br /&gt;
michelle_wordpress.wp_options.sql.gz michelle_wordpress.wp_term_relationships.sql.gz michelle_wordpress.wp_usermeta-schema.sql.gz&lt;/p&gt;
</description>
</item>

<item>
<title>Установка CentOS + MySQL + Varnish + Nginx + PHP-FPM</title>
<guid isPermaLink="false">66</guid>
<link>https://blog.it-premium.com.ua/all/ustanovka-centos-mysql-varnish-nginx-php-fpm/</link>
<pubDate>Thu, 05 Nov 2015 14:18:11 +0100</pubDate>
<author></author>
<comments>https://blog.it-premium.com.ua/all/ustanovka-centos-mysql-varnish-nginx-php-fpm/</comments>
<description>
&lt;p&gt;&lt;a href="https://stavrovski.net/blog/install-and-configure-nginx-mysql-php-fpm-in-centos-6#set-up-mysql"&gt;https://stavrovski.net/blog/install-and-configure-nginx-mysql-php-fpm-in-centos-6#set-up-mysql&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/"&gt;http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.sitepoint.com/set-automatic-virtual-hosts-nginx-apache/"&gt;http://www.sitepoint.com/set-automatic-virtual-hosts-nginx-apache/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Деплой по хуку в гитлабе&lt;br /&gt;
&lt;a href="https://github.com/mauricerenck/code-samples/blob/master/gitlab-deploy/deploy.php"&gt;https://github.com/mauricerenck/code-samples/blob/master/gitlab-deploy/deploy.php&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://habrahabr.ru/post/246699/"&gt;http://habrahabr.ru/post/246699/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://habrahabr.ru/post/269163/"&gt;http://habrahabr.ru/post/269163/&lt;/a&gt;&lt;/p&gt;
</description>
</item>


</channel>
</rss>