Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu
Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir
2009'daki anlayışından bu yana MongoDB NoSQL endüstrisine liderlik etmektedir. MongoDB'nin temel kavramlarından biri Replica Set'tir, bu yüzden onunla çalışmadan önce konsepti gözden geçirelim.
Veritabanlarının çoğaltılmasında kullanılan en basit iletişim modeli Master-Slave mimarisidir. Adından da anlaşılacağı gibi, bu modelin benzersiz bir ustada ve birçok kölede yayılmış 2 rolü vardır, ustanın rolü müşteriler tarafından yapılan okuma ve yazma işlemlerini işlemek ve köleler ustanın bir kopyası olarak kabul edilir.
Bu modelin en önemli avantajı, master'ın performansının yedekleme işlemlerinden ödün vermemesi, yedekleme işlemlerinin eşzamansız bir şekilde yapılması ve ana düğüm başarısız olduğunda ciddi bir sorun haline gelebilmesidir. Slave düğümler salt okunurdur ve ana düğüme manuel olarak yükseltilmeleri gerekir, bu nedenle bu zamanda veri kaybı olasılığı vardır.
Kullanılabilirlik sorununu çözmenin bir seçeneği, mimaride birden fazla yöneticiye sahip olmaktır, ancak bu, bu örnekler arasındaki verilerin tutarlılığında ve yapılandırmanın ek karmaşıklığında başka bir soruna yol açabilir.
Şimdi bağlam verildiğinde , MongoDB'nin Replica Set teknolojisini sunabiliriz . Çoğaltma Kümesi, otomatik yük devretme özelliğine sahip Master-Slave mimarisinin adıdır, bu nedenle (şimdi adlandırılmış olan primary
) bir ana düğümün düzgün bir şekilde işlevini yerine getirememesi durumunda election
, geri kalan slave'lerden yeni bir birincil düğüm seçilir ( olarak anılacaktır secondaries
).
Birincil düğüm yazma işlemlerini gerçekleştiren tek düğümdür, varsayılan olarak okuma işlemleri birincil tarafından da işlenir, ancak bu davranış daha sonra değiştirilebilir.
İşlemler oplog
(işlem günlüğüne) kaydedilir , daha sonra ikincil düğümler, içeriklerine göre eşzamansız olarak güncelleniroplog
Not: oplog
Sınırlı bir koleksiyondur, yani koleksiyonun bir sınırı vardır, local.oplog.rs
bu koleksiyonun içeriğini herhangi bir küme üyesinde bir mongo kabuğu içinde kontrol edebilirsiniz.
Veritabanının uygun bir yedeğini alanların yanı sıra, ikincil bir düğüm şu rollere sahiptir:
Bu özellikler sayesinde farklı ikincil düğüm türlerine sahip olabiliriz:
primary
seçilemez ve bir seçimi tetikleyemez, yine de seçimlerde oy kullanabilir, tam bir kopyaya sahip olabilir ve okuma işlemlerini kabul edebilir. Bunlar çoklu veri merkezi dağıtımında yardımcı olabilir.Priority 0
üyedir, ancak okuma işlemlerini gerçekleştiremezler. Gerekirse oy kullanabilirler. Bu üyeler için tercih edilen görevler raporlama ve yedeklerdir.priority 0
düğüm olmalıdır ve hidden
ayrıca üye olmaları önerilir .Bir altyapıyı dağıtmadan önce onu tasarlamak önemlidir ve bu tasarımda dikkat edilmesi gereken noktalar vardır.
Çoğaltma kümesi oluşturmak için minimum öğe sayısının 3 olduğunu unutmayın . Üç düğüm türünü en az bir birincil ve bir ikincil düğümle karıştırabilirsiniz.
Bu kılavuzda bir birincil ve iki standart ikincil olmak üzere 3 üye kullanıyoruz.
Not: Hakem ve ikincil üyelerden oluşan bir karışımla en fazla 7 oy kullanan üyeye sahip olmanız önerilir.
Ad sadece referans içindir, ancak kümenin yapılandırmasında kullanıyorsunuz. Üretim ortamınızda birden fazla Çoğaltma ayarlayabileceğinizi unutmayın, bu nedenle kümenizin adını ihmal etmeyin.
Bu öğretici kullanıcıyı setin adını seçmeye teşvik eder.
Bu eğitimde, iletişim sorunlarından kaçınabilmeniz için aynı veri merkezinde konuşlandırmanız önerilmektedir.
Not: Farklı veri merkezlerine dağıtılması durumunda, düğümlerinizi bir VPN ile sarmanız önerilir
Ubuntu 16.04 x64'ün 3 düğümünü başlatın; mümkünse müşteri portalınızdan aynı bölgede. Bunları, üzerinde çalıştığınız proje türüne göre adlandırmayı unutmayın ve tüm bu düğümlerde aynı sunucu boyutuna sahip olduğunuzdan emin olun .
3 düğümünüzü konuşlandırdıktan sonra, her düğümün geri kalanıyla konuşabileceğinden emin olmanız gerekir. İki düğüme ssh ve kullanarak diğerlerine ulaşmak gerekir ping -c 4 EXAMPLE_IP
. Değişim EXAMPLE_IP
için düğüm gerçek IP numaraları.
Burada iki düğüm arasındaki başarılı iletişimin bir örneğini görebilirsiniz.
root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms
--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms
Genel olarak Ubuntu'nun MongoDB paketini kullanabilirsiniz, ancak her zaman güncel olduğundan resmi topluluk deposunu kullanmak daha iyidir. Bu repo şu paketleri içeriyor:
mongod
daemon'u içerir (veri isteklerini işleyen birincil işlem).mongos
daemon'u içerir (paylaşılan dağıtımlar için yönlendirme hizmeti).mongo shell
JavaScript arayüzüdür.Paketleri kurmaya devam edin.
Genel anahtarı paket yönetim sistemine aktarın.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
MongoDB '/etc/apt/sources.list.d/mongodb-org-3.4.list' için liste dosyasını oluşturun.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Paket veritabanını güncelleyin.
sudo apt-get update
MongoDB meta paketini takın.
sudo apt-get install -y mongodb-org
MongoDB hizmetini başlatın.
sudo service mongod start
Şimdi mongo shell
herhangi bir bash oturumunda açabilirsiniz . Bunu yapmak için mongo
komutu kullanmanız gerekir . Buna benzer bir şeyle karşılaşacaksınız.
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>
Hizmeti kapatmayı unutmayın sudo service mongod stop
, çünkü daha sonra mongod
bazı parametrelerle tekrar başlayacağız . Bu işlemi setin 3 düğümünde de tekrarlayın.
Bir anahtar dosyası kullanmak, Çoğaltma Kümesi yönetiminde iki kavramı zorlar. İlki Internal Authentication
. Varsayılan olarak, mongo shell
bir kullanıcı kullanmadan bir oturum başlatabilirsiniz ve bu oturum veritabanı üzerinde tam denetime sahip olacaktır, ancak kimlik doğrulaması için bir anahtar dosyası kullandığınızda mongo shell
oturumunuz adlı bir duruma ulaşır localhost exception
. Bu durum yalnızca yönetici kullanıcı ve Çoğaltma kümesi oluşturmanıza olanak tanır. İkinci kavram Role-Based Access Control
ya da başka bir deyişle yetkilendirmedir. Bu, yönetim düzeylerini Çoğaltma kümesine yönlendirmek için uygulanır.
Anahtar dosya, kümede kullanılacak paroladır, bu parola kümenin tüm üyelerinde aynı olmalıdır . Güvenliği artırmak için, seçtiğiniz araçla rastgele bir anahtar kullanmak önemlidir.
İçerik 6 ila 1064 karakter uzunluğunda olmalıdır. Ayrıca read only
, anahtar dosyası için izin ayarlamanız gerekir .
chmod 400 PATH_OF_YOUR_KEYFILE
Şimdi keyfile dosyasını ayarlanan her üyeye kopyalayın, lütfen ileride başvurmak üzere tutarlı bir klasör kullanın ve çıkarılabilir bir ortamda saklamayın.
Ayrıca mongod
erişilebilen dosya için bir klasör kullanın .
Bu adımda mongod daemon
her set üyesinde başlamamız gerekir . mongod
İşlemi başlatmanın iki yolu vardır : bir yapılandırma dosyası kullanmak veya komut satırını kullanmak. Her ikisi de oldukça kolay yöntemlerdir, ancak sadece basitlik için bu öğretici komut satırı sürümünü kullanır.
Bu komutta daha önce seçtiğiniz adı kullanın.
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
Varsayılan mongod
olarak arka plan programı olarak çalışmaz. --fork
Parametreyi kullanmanız veya upstart
bunu daemon olarak tam olarak çalıştırmak için kullanmanız gerekir . Bu eğitimde mongod
, günlükleri doğrudan terminalinizde görebilmeniz için bir daemon olarak çalıştırmayı teşvik etmiyoruz .
Not: Çoğaltma kümesinin adını dikkatlice yazın, çünkü oluşturulduktan sonra değiştiremezsiniz.
Not: mongod
Arka plan programı olmayan bir işlem olarak çalıştırırsanız , çalışmaya devam etmek için başka bir ssh bağlantısı açmanız gerekir.
. mongo
Komutunu açmak için komut kullanmalısınız mongo shell
. Bu setin herhangi bir üyesinde yapılabilir.
Şu anda adında bir durumdayız localhost exception
. İşlemi ayarlamak için bir anahtar dosyası kullanıldığında mongod
, okuma-yazma işlemlerini uygulamadan önce bir veritabanı yöneticisi oluşturmanız gerekir, ancak daha sonra buna gireceğiz.
Bu bizim komutu kullanırken, hassas bir parçasıdır rs.initiate()
içindeki mongo shell
bu komut edelim inceleme kullanımdan önce adım 4'ten itibaren.
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
İlk _id
alan bir dizedir ve --replSet
daha önce iletilen alanla eşleşmelidir mongod
. Ayrıca, her değeri host
Çoğaltma kümesinin her üyesinin ip veya etki alanı adı olmalıdır. Mongo örneğinin kullandığı bağlantı noktasını her üyeye eklemeyi unutmayın.
Şimdi komutu verilerinizle yürütmenin zamanı geldi, bu bir tetikleyecek election
, daha sonra bir birincil otomatik olarak seçilecek.
Burada kabuk imlecinizin YOUR_SET_NAME:PRIMARY>
veya olarak değiştiğini not etmelisiniz YOUR_SET_NAME:SECONDARY
. Bu, bir set oluşturmanın başarılı olduğu anlamına gelir.
Çalışmaya devam etmek için primary
elbette üzerinde değilseniz, bulmanız gerekir . rs.status()
Çoğaltma kümesinin bilgilerini göstermek için komutunu kullanın ve öğesini bulun primary
. Mülkü arıyorsunuz "stateStr" : "PRIMARY"
.
Öğesini bulduktan sonra , verilerinizi kullanarak sonraki komutu primary
girin mongo shell
ve çalıştırın.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
admin = db.getSiblingDB("admin")
Bölüm bizi içine yazmanıza olanak tanır admin
farklı bir veritabanından. Bu adlı bir takma ad oluşturur admin
, böylece bunun yerine komutları yürütebiliriz.
İşlem başarılı olursa, kullanıcının eklendiğine dair bir bildirim alırsınız.
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Bu noktada, tüm sunucular için yalnızca bir yöneticimiz var, ancak bir Çoğaltma ayarına sahip olmak bizi bu clusterAdmin
rolde bir kullanıcıya sahip olmaya zorlar . Endişeleri ayırmak için sadece bu role sahip başka bir kullanıcı oluşturacağız.
Sınırına ulaştık localhost exception
, bu yüzden kimlik doğrulamasını bir adım önce oluşturulan kullanıcıya değiştirmeliyiz.
İçindeki kullanıcıları mongo shell
aşağıdakilerle değiştirebilirsiniz.
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
Henüz bağlanmadıysanız mongo shell
bunun yerine bu komutu kullanın.
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
Bir kullanıcının değiştiği konusunda bilgilendirileceksiniz ve bir sonraki adıma geçebilirsiniz.
clusterAdmin
Rol Replica setin kullanıcı tam kontrol sağlar. Oluşturmak, yönetici kullanıcı oluşturmak kadar kolaydır.
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
Bu kez rolün olarak değiştirildiğini unutmayınclusterAdmin
.
Şu anda 2 yönetici kullanıcısı var: biri sunucu üzerinde tam denetime sahip, diğeri de Çoğaltma kümesi düzeyinde yönetim görevlerine erişimi olan. Yine de, bir veritabanını "kullanma" erişimi olan bir kullanıcıya sahip değiliz. Şimdi bu kullanıcıyı yaratacağız.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
Bu kez db
parçayı değiştirdiğimize dikkat edin , orada veritabanını kullanıcı tarafından erişilebilir hale getiriyoruz, bu durumda adında bir veritabanı kullanıyoruz cars
.
Veritabanı henüz oluşturulmadı. Bunu yapmak için, dolaylı olarak oluşturmak için bazı komutlar yazmanız gerekir. cars
Veritabanına geçin .
use cars
Sen bir bildirim alır: switched to db cars
.
Veritabanı hala oluşturulmadı, bunun için bir şeyler yazmanız gerekiyor. Aşağıdaki örneği kullanıyoruz.
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
Bu kez bilgilendirileceksiniz WriteResult({ "nInserted" : 1 })
.
İsterseniz, find()
yöntemdeki veritabanındaki tüm nesneleri alabilirsiniz :
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
Not _id
çıktınıza farklı olacaktır, ancak diğer veriler aynı olmalıdır. Yeterli zaman verildiğinde, bu veriler diğer üyelere çoğaltılacaktır.
Bir Çoğaltma Seti oluşturmak ilk başta zor olabilir, çünkü anlayacak çok fazla bilgi var, ancak arkasındaki fikri bir kez bir esintiyle dağıtabilirsiniz, bu yüzden ilk kez kavrayamazsanız vazgeçmeyin. MongoDB yönetiminde Çoğaltma kümesinin önemli olduğunu unutmayın, çünkü Yük Dengeleme gibi gelişmiş özellikler ekleme olanağını açar.
Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir
Giriş PostgreSQL, web siteleriyle ilgili bilgileri depolamak için kullanılabilen ücretsiz ve açık kaynaklı bir veritabanı yönetim sistemidir. Aynı zamanda bir
MongoDB varsayılan olarak güvenli değildir. MongoDByi yüklüyorsanız ve kimlik doğrulama için yapılandırmadan başlatırsanız, kötü bir zaman geçireceksiniz.
RockMongo, MySQL Yönetim aracına benzeyen web tabanlı bir MongoDB Yönetim aracıdır: phpMyAdmin. Bu öğretici kurulum sürecini kapsayacaktır.
Farklı Bir Sistem mi Kullanıyorsunuz? Apache Cassandra, ölçeklenebilirlik sağlamak için tasarlanmış ücretsiz ve açık kaynaklı bir NoSQL veritabanı yönetim sistemidir.
MySQL, veritabanları için kullanılan dünyanın en popüler yazılımıdır. Veritabanınızın yedeklerinin olduğundan emin olmak çok önemlidir. Bu uygulama izin verir
Giriş MyCLI, MySQL ve MariaDB için otomatik tamamlamanızı sağlayan ve SQL komutlarınızın sözdizimine yardımcı olan bir komut satırı istemcisidir. MyCL
MongoDB hızlı ve güçlü bir NoSQL veritabanıdır. Ancak, Debian depoları yavaşça güncellenir ve genellikle paketlerin çok eski sürümlerini içerir. Bu tutoria
Barnyard2, Snortun ikili çıktılarını bir MySQL veritabanında saklamanın ve işlemenin bir yoludur. Başlamadan önce Lütfen horlama yoksa
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş ArangoDB, belgeler, grafikler ve anahtar / değer çiftleri için esnek bir veri modeline sahip açık kaynaklı bir NoSQL veritabanıdır. Bu
Farklı Bir Sistem mi Kullanıyorsunuz? Apache Cassandra, ölçeklenebilirlik sağlamak için tasarlanmış ücretsiz ve açık kaynaklı bir NoSQL veritabanı yönetim sistemidir.
Giriş InfluxDB, Goda yazılmış zaman serisi tabanlı bir veritabanıdır. InfluxDB, biri izleme verilerini sunucularda depolayan birçok pratik kullanıma sahiptir. ben
phpRedisAdmin, Redis veritabanlarını sezgisel bir grafik kullanıcı arayüzü ile yöneten bir web uygulamasıdır. Bu eğitici nasıl yükleneceğini açıklayacaktır
Redis bir veri yapısı deposudur. WordPress siteleri arasında popülerdir, çünkü önbelleğe almada optimize edilmiş yaklaşımı nedeniyle büyük performans artışları sunar.
Giriş Bu yazıda, özel bir bash betiği kullanarak aynı makinede oturan birden fazla MySQL veya MariaDB veritabanını nasıl yedekleyeceğinizi inceleyin
Redis, genellikle NoSQL veritabanı olarak adlandırılan anahtar / değer içeren bir veri depolama çözümüdür. Çok yüksek okuma / yazma hızlarına ulaşabilir, çünkü bellek içi bir
Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın) Sudo erişimi: Kök olarak çalıştırılması gereken komutların önüne # ve bir
MariaDB ücretsiz bir açık kaynak veritabanıdır ve MySQL için en yaygın kullanılan drop-in yedeğidir. MySQL geliştiricileri tarafından yapılır ve
Yedekleme, veritabanlarıyla uğraşmanın önemli bir parçasıdır. İster kurumsal bir site yönetin, ister sadece WordPress barındırın, sizi yedeklemek önemlidir
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun